630
צפיות
צפיות
15
תשובות
תשובות
סקריפט שמחשב און ליין מספרים
שלום,
יש לי טופס , ובו המשתמש יכול לסמן CHECKBOX שלצידם יש מספרים.
אני מעוניין בסקריפט שיחשב בזמן אמת את הסכום הכולל לפי בחירת המשתמש.
כלומר אם המשתמש בחר שדה שהערך שקבעתי שבשילו הוא לדוגמה 4
ואחר כך שדה שהערך שקבעתי שבשילו הוא לדוגמה 8
הוא יציג לי בשדה נפרד את הסכום של שניהם
איך עושים את זה בבקשה? יש למישהו מושג?
תודה
15 תשובות
תשובה
על כל checkbox תוסיף
onclick="document.YourFormName.textBox.value=this.value+document.YourFormName.textBox.value;"
ה ו…
textBox זה ה name של השדה שאליו אתה רוצה את הערך המחובר
תודה – אבל יש 2 בעיות:
בעייה ראשונה – שזה לא מחשב את הסכום של הערכים – אלא מציג אחד אחרי השני:
כך שאם למשל יש לי שני checkbox שאחד מהם הוא בעל value של 4
והשני בעל value של 5
אז זה יציג לי את המספר 45
ולא 9 – שזה הסכום של שניהם.
בעייה שנייה:
כרגע לכל checkbox שיש לי – מוגדר לו מחרוזת טקסט שמתארת אותו ב VALUE
(כדי שאני ידע כשהטופס נשלח איזה checkbox בחר המשתמש)
אז במידה והבעייה הראשונה תיפתר.. איפה אני יכול להגדיר את הערך המספרי של ה CHECKBOX בלי לפגוע במחרוזת הטקסט שנמצאת ב VALUE ?
אני מקווה שהסברתי את עצמי טוב..
eval()
onclick="document.YourFormName.textBox.value=eval(this.value+document.YourFormName.textBox.value;)"
הממ – זה לא עזר
זה מציג את הערכים אחד במקום השני במקום לחשב אותם
תיקון:
זה מציג את הערכים אחד אחרי השני במקום לחשב אותם
תתקן ל
eval(this.value + '+' + document.YourFormName.textBox.value);
תיקנתי וזה נותן הודעת שגיאה
תיקנתי את הפקודה לפי מה שכתבת
ועכשיו ברגע שאני מסמן טקסטבוקס הוא מקפיץ לי הודעת שגיאה של javascript
תחסוך לשנינו ו…
תדביק פה דוגמא מהקוד שכתבת.
אוקיי דוגמא:
<form action="test.asp" method="post" name="test" />
<input value="33" type="checkbox" name="services" onclick="document.test.textBox.value=eval(this.value + '+' + document.test.textBox.value);">Checkbox-1<br>
<input value="45" type="checkbox" name="services" onclick="document.test.textBox.value=eval(this.value + '+' + document.test.textBox.value);">Checkbox-2<br>
<input name="textBox" type="text">
</form>
בבקשה
אני מניח שזה מה שרצית.
הטעות היא כשלא נתת ערך מספרי לtextBox.
value="0"
ולכן הדפדפן התייחס אליו כמחרוזת.
<form action="test.asp" method="post" name="test" />
<input value="33" type="checkbox" name="services" onclick="mycheck(this);">Checkbox-1<br>
<input value="45" type="checkbox" name="services" onclick="mycheck(this);">Checkbox-2<br>
<input name="textBox" type="text" value="0">
</form>
<script type="text/javascript">
function mycheck(x) {
if (x.checked==true) {
document.test.textBox.value=eval(document.test.textBox.value + '+' + x.value);
}
else {
document.test.textBox.value=eval(document.test.textBox.value + '-' + x.value);
}
}
</script>
מעולה תודה -ועוד שאלונת באותו הקשר:
אני רוצה שמצד אחד ב VALUE של כל CHECKBOX יהיה ערך מספרי אותו אני
רוצה שהסקריפט שדיברנו עליו יחשב אותו – כמו בדוגמאות האחרונות.
אבל מצד שני אני מעוניין שכאשר אני ישלח את הטופס – אני יקבל פירוט – לא מספרי ! של מה שהמשתמש בחר.
אבל יש לי רק value אחד בכל checkbox אז איך ניתן בכל זאת להשתמש מצד אחד בערכים מספריים לצרכי חישובים – ומצד שני לתת תיאור של כל שדה לצרכים של לאחר משלוח הטופס בשביל שאני יוכל לפענח את התוצאות ומה המשתמש בחר
תודה רבה
שדה hidden
אתה יכול להשתמש בשדה חבוי כדי לכלול מידע שאתה לא מעוניין שהמשתמש יראה עבור כל checkbox.
<input type="hidden" value="sometext"
אני לא מבין
אם אתה ממילא צריך לשלוח את הבחירה לשרת, למה להסתבך?
תשלחת את כל הצ'קבוסים נשבחרו ותעשה איתם מה שבא לך בשרת, בשביל מה לך עוד סיבוך עם צד"ל?
צודק
באמת מיותר להישתמש בhidden
שאפשר להשתמש בname בצד השרת.