עבור לתוכן

אימות נתונים בjavascript ושליחה לprocessing בPHP

Featured Replies

פורסם

שלום.

יש לי טופס מאוד פשוט לביצוע חיפוש באתר שמורכב רק משדה של טקסט וכפתור submit.

עכשיו אני רוצה לוודא שיש ערך כלשהו (שהוא לא רווח) בשדה הטקסט לפני שאני שולח אותו לטיפול בדף PHP.

איך אני עושה את זה?

חשבתי לשנות את הכפתור מסוג submit לסוג button ולהוסיף שדה onclick שיריץ פונקציה בjavascript שתבדוק אם יש ערך

ואם יש אז הוא יבצע את הפעולה submit

אני רק לא יודע איך אני בדיוק כותב את זה...

פורסם

זה די פשוט, צור פונקציה שמחזירה true אם הקלט תקין ו-false אחרת, ורשום אותה ל-onsubmit של הטופס.

פורסם
  • מחבר

אני לא מאוד מבין בjavascript.. ניסיתי כזה דבר.

הטופס:





<form name="search_form" action="search.php" method="get">
<fieldset style="background-color: lightgreen; border:0pt;width:180px;float:left;">
<input type="text" name="phrase" style="width:178px;" />
<br />
<a href="advcsrc.php" style="font-size:10pt;"> Advanced Search. </a>
<span style="float:right;">
<input type="button" onclick="search(document.getElementById('phrase')" name="search" id="search" value="Search" />
</span>
</fieldset>
</form>

והקוד ב javascript:





function search(phrase) {
phrase.replace(/^\s+|\s+$/g,"");
if(phrase.length == 0){
alert("The Search field is empty! /n Please enter a search phrase, and try again.");
phrase.focus();
}else{
document.search_form.submit();
}
}

זה לא עובד לי- ואני חושב שזה בגלל שאני שולח לפונקציה אלמנט של טופס ולא מחרוזת..

אבל זה גם לא עבד לי כשניסיתי בטופס לכתוב:



<input type="button" onclick="search(phrase.value)" name="search" id="search" value="Search" />

פורסם

כמו שאמרתי, סיבכת :)

צריך משהו כזה:


<script>
function validate() {
phrase = document.getElementById("phrase").value;
if (phrase is valid) {
return true;
} else {
return false;
}
}
</script>

<form action="search.php" method="get" onsubmit="return validate()">
<input type="text" name="phrase" />
<input type="submit" />
</form>

כשכמובן במקום "phrase is valid" שים את הקוד שבודק שהביטוי אכן תקני.

פורסם
  • מחבר

שיניתי כמו שהצעת- עם השינויים:





function validate() {
phrase = document.getElementById("phrase").value;
phrase.replace(/^\s+|\s+$/g,"");
if (phrase.length == 0) {
return true;
} else {
return false;
}
}

וזה עדיין לא עובד לי.

אני אמור לשנות את document לשם של הדף?

פורסם

שים alertים כדי לדעת מה קורה בדיוק (תבדוק מה בדיוק הביטוי הרגולרי מצא וכו').

פורסם
  • מחבר

לא נראה לי שזה מריץ בכלל את הjavascript זה לא הראה אף אחד מהalertים שהוספתי.

פורסם

אז תעלה לכאן את כל הקוד הרלוונטי.

חוץ מזה, יש דרכים לדבג את הג'אווהסקריפט בדפדפן (יש כלי מובנה לזה בכרום, ולפיירפוקס יש את Firebug).

פורסם
  • מחבר

הטופס:





<form name="search_form" action="search.php" method="get" onsubmit="validate()">
<fieldset style="background-color: lightgreen; border:0pt;width:180px;float:left;">
<input type="text" name="phrase" style="width:178px;" />
<br />
<a href="advcsrc.php" style="font-size:10pt;"> Advanced Search. </a>
<span style="float:right;">
<input type="submit" name="search" id="search" value="Search" />
</span>
</fieldset>
</form>

הקוד של javascript (הוא נמצא בין תגיות script)





function validate() {
phrase = document.getElementById("phrase").value;
alert(phrase);
phrase.replace(/^\s+|\s+$/g,"");
if (phrase.length == 0) {
alert("found expression to be true");
return true;
} else {
alert("found expression to be false");
return false;
}
}

אני לא יודע אם זה רלוונטי- אבל הטופס נמצא בקובץ אחד והפונקציה של javascript בקובץ שני ואז קובץ שלישי של php שמשתמש בinclude על שתי הקבצים. לא נראה לי שזה יוצר את הבעיה כי אני עושה את זה כבר לכמה פונקציות ולא הייתה לי שום בעיה.

פורסם

שים לב שאתה עושה getElementById אבל לתיבת הטקסט שלך יש name, לא id.

חוץ מזה, אתה צריך לעשות return validate, לא סתם validate.

פורסם
  • מחבר

אוקי- עובד פיצוץ עכשיו-

תודה רבה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים