הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   לחיצה על SUBMIT מנוטרל? (https://hosts.co.il/forums/showthread.php?t=104041)

dabi 31-05-13 16:38

לחיצה על SUBMIT מנוטרל?
 
PHP קוד:

<script type="text/javascript">
 function 
enable(){

  if (
document.form_name.agreed.checked==''){

   
document.form_name.add_fisrt.disabled=true

  
}else{

   
document.form_name.add_fisrt.disabled=false

  
}

 }
 
 

</script>
<form name="form_name">    
 <input type="checkbox" name="agreed" onchange="enable()"> TEXT
    <br /><input type="submit"  name="add_fisrt" value="המשך" disabled />
    
    
</form> 

זה הקוד
פשוט מאוד ה CHECKBOX כאשר לוחצים עליו זה מפעיל ומנטרל את ה SUBMIT
מה שאני רוצה שאם ילחצו על הSUBMIT והוא מנוטרל זה יציג שגיאה
אם אני עושה ONCLICK על הSUMBIT זה לא עובד אם הוא מנוטרל

אשמח לעזרה

אביב 31-05-13 23:10

תקנו אותי אם אני טועה במרבית הדפדפנים המודרנים אירועי DOM לא אפשריים על שדות שהם מושבתים (disabled) - הדפדפן לא יודע שהוא קיבל לחיצה וגם לא יודע להעביר את אירוע הלחיצה.
פתרון שעלה לי לראש, אתה יכול לעטוף את הכפתור ב-DIV ולעקוב אחר הלחיצה עליו.
בהצלחה

אדיר 31-05-13 23:21

לכפתור תתן מראה של disabled באמצעות css ותחבר לו את הפונקציה הרצויה ב- onclick,
את הביטול של שליחת הטופס תבצע באמצעות האירוע onsubmit שלו.

Haimz 01-06-13 10:11

אמור לעבוד ולעשות את העבודה:
HTML קוד:

<!DOCTYPE html>
<html>
<body>

<script>
function toggle()
{
    if(document.getElementById('agreed').checked)
    {
        document.getElementById("submit").disabled = "disabled";
    }
    else
    {
        document.getElementById("submit").removeAttribute("disabled");
    }
}
</script>

<input type="checkbox" id="agreed" onclick="toggle();" /> text<br />
<input type="submit" name="submit" id="submit" value="button" />

</body>
</html>


אדיר 01-06-13 10:52

זה לא יעבוד, כמו שאביב אמר - הדפדפן לא יריץ את זה כאשר הכפתור מוגדר כ- disabled.
http://jsfiddle.net/d6Rav

IgalSt 01-06-13 11:35

כמו שאדיר ציין, מאוד חשוב לבצע את הולידציה של משלוח הטופס לא על כפתור השליחה אלא על ארוע השליחה של הטופס, כלומר ארוע onsubmit.

למה?
כי הנחת העבודה שלנו צריכה להיות שלא משנה לנו כיצד המשתמש הגיע למצב שהטופס מנסה להשלח. במילים אחרות, לא משנה לנו אם המשתמש לחץ על כפתור "שלח", לחץ enter כשהוא באחד מה-Input-ים או שסקריפט javascript במקום אחר מנסה לשלוח את הטופס מסיבה לא ברורה.
בסופו של דבר, אנחנחו רוצים לעשות את הולידציה כששולחים את הטופס ויהי מה. לא כשלוחצים על כפתור השליחה ולא בשום פעולה/ארוע אחרים.

dabi 02-06-13 09:02

ציטוט:

נכתב במקור על ידי IgalSt (פרסם 877403)
כמו שאדיר ציין, מאוד חשוב לבצע את הולידציה של משלוח הטופס לא על כפתור השליחה אלא על ארוע השליחה של הטופס, כלומר ארוע onsubmit.

למה?
כי הנחת העבודה שלנו צריכה להיות שלא משנה לנו כיצד המשתמש הגיע למצב שהטופס מנסה להשלח. במילים אחרות, לא משנה לנו אם המשתמש לחץ על כפתור "שלח", לחץ enter כשהוא באחד מה-Input-ים או שסקריפט javascript במקום אחר מנסה לשלוח את הטופס מסיבה לא ברורה.
בסופו של דבר, אנחנחו רוצים לעשות את הולידציה כששולחים את הטופס ויהי מה. לא כשלוחצים על כפתור השליחה ולא בשום פעולה/ארוע אחרים.

לא הבנתי
אז ניתן לעשות מה שאני מבקש? חוץ מלעטוף עם DIV שאז זה בעייתי יותר?
או שבאמת כאשר הכפתוןר מנוטרל לא ניתן?

אביב 02-06-13 23:26

ציטוט:

נכתב במקור על ידי dabi (פרסם 877459)
לא הבנתי
אז ניתן לעשות מה שאני מבקש? חוץ מלעטוף עם DIV שאז זה בעייתי יותר?
או שבאמת כאשר הכפתוןר מנוטרל לא ניתן?

זה אפשרי אם אתה מעוניין ללכת ראש בקיר.
http://jsfiddle.net/zqNvQ/1/

dabi 03-06-13 12:59

ציטוט:

נכתב במקור על ידי אביב (פרסם 877525)
זה אפשרי אם אתה מעוניין ללכת ראש בקיר.
http://jsfiddle.net/zqNvQ/1/

למה ראש בקיר? מה רע במה שעשית?

אביב 03-06-13 13:18

ציטוט:

נכתב במקור על ידי dabi (פרסם 877542)
למה ראש בקיר? מה רע במה שעשית?

לא מדובר פה על "רע" ו-"טוב",
כמו שאדיר ויגאל אמרו onsubmit הוא אירוע המייצג שליחת טופס בין אם זה באמצעות כפתור Submit או כול טריגר שמפעיל את submit() (שים לב onsubmit מתייחס לאובייקט הטופס).
לעומת onclick שהוא אירוע יותר כללי - לחיצה על הכפתור השמאלי של העכבר.
תוכל לקרוא עוד כאן.


כל הזמנים הם GMT +2. הזמן כעת הוא 01:14.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ