צפיות
תשובות
כתיבת טופס בתוך פונקציה JavaScript
בוקר טוב וחג שמח
יש לי מספר שאלות בקשר לכתיבת טופס בתוך פונקציה של JavaScript:
יש לי נתונים מה- DB שקיבלתי ע"י getString.
עכשיו, אני רוצה להציג חלק מהם בתוך שדות טופס כדי לעדכן…
1. ב-HTML תקני כותבים, למשל:
<form name="abc" dir="rtl">
איך מתייחסים לתווי המרכאות (" או ' ) כאשר משתמשים ב-
document.write(" ….")
1.א. אותו דבר לגבי שורה מהסוג:
<form name="abc<%=i%>" dir=rtl>
2. איך מציגים תוכן של תא מסוג טקסט במערך (השורה הבאה מניבה רק את המילה הראשונה במחרוזת הנמצאת ב-checkVal , אם מדפיסים בנפרד את checkVal הוא מראה את כל המחרוזת)
document.write("<br><input type=text name=tipTransaction id=tipTransaction value=" + checkVal + " size=100 >")
קטע קוד שמכיל את כל הקטעים (נכון לרגע זה …)
function updateArray(record, i){
//document.write(<form name="abc<%=i%>" dir=rtl>)
document.write("<form name=abc dir=rtl>")
checkVal = record[2]
document.write("<p>טרנזקציה:")
document.write("<br><input type=text name=tipTransaction id=tipTransaction value=" + checkVal + " size=100 >")
// <input type="button" value=שלח onClick="updateJob('abc<%=i%>',<%=i%>)">
document.write("</form>")
}
תודה.
34 תשובות
עליך להשתמש בסלאש לפני המרכאות
document.write("<form name="abc">")
הכנסת נתונים שמקבלים מהשרת <% = %> אפשר להכניס בכל מקום בדף זה לא מפריע.
אתה מקבל רק את המילה הראשונה שבמשתנה בגלל שלא השתמשת בגרשיים
תודה, אבל עדיין יש לי בעיה …
לגבי השורה של :
document.write("<br><input type=text name=tipTransaction id=tipTransaction value=" + checkVal + " size=100 >")
ניסיתי לעטוף את ה- checkVal בגרשיים וזה לא עובד – אם שמים גרשיים בשני הצדדים של המשתנה checkVal התוכן שמתקבל הוא … checkVal
ניסיתי גם להוסיף סלאש לפני הגרשיים…..
האם תוכל לתת דוגמא בקוד?
שוב, תודה.
התכוונתי שתשים
גרשיים שיעטפו את התוכן של checkVal
document.write("<br><input type="text" name="tipTransaction" id="tipTransaction" value="" + checkVal + "" size="100" >")
תודה, תודה
בעיה חדשה, דומה אבל שונה …
שלום,
שוב נתקעתי, הפעם עם השורה הזו (המקור):
<input type="button" value=שלח onClick="updateJob('abc<%=i%>',<%=i%>)">
הוספתי סלאשים () לפני כל ה- "
נראה לי שהבעיה כרגע היא עם ה- ' שבפרמטר הדינמי הראשון של הפונקציה …
הוספתי גם לו אבל הפונקציה לא הופעלה ….
הפונקציה היא פשוטה ועבדה כשהטופס עמד בפני עצמו (לא דרך document.write)
function updateJob(fName,ind)
{
alert(ind + " – " + document.all(fName).tipID.value + " – " + document.all(fName).tipTransaction.value)
}
השאלה היא האם ה-i מוגדר?
ואם זה לא זה אז מה השגיאה שאתה מקבל ?
הבעיה היא ….
ה-i אכן מוגדר, כי מתקבל תוכן של שדות בתוך הטופס.
אין הודעת שגיאה(!) אבל לחיצה על הכפתור לא פותחת את החלון של ה-alert.
כלומר – לא קורה כלום …..
כפי שכתבתי בהודעה הקודמת, הטופס נוסה בפני עצמו בעבר -לא דרך document.write ועבד מצויין ומכאן המסקנה שמשהו בתחביר בעייתי.
שאלה נוספת, האם יש איזשהו אתר שבו יש הסבר לגבי ההתייחסות לתווים מיוחדים או רשימה שלהם?
תודה, וערב טוב
הנה
בקשר לשאלה הנוספת אז הנה האתר (הילדה הביאה לי אותו בזמנו)
ובקשר לשאלה שלך אז לי זה כן עובד
עשיתי את הקוד הבא (במקרה שה-i הוא משתנה לולאה)
<script type="text/javascript">
function updateJob(fName,ind)
{
alert(ind + " – " + document.all(fName).tipID.value + " – " + document.all(fName).
tipTransaction.value)
}
</script>
<% for i=1 to 5 %>
<form name="abc<% =i %>">
<input type="text" name="tipID" />
<input type="text" name="tipTransaction" />
<input type="button" value=שלח onClick="updateJob('abc<%=i%>',<%=i%>)"><br>
</form><br>
<% next %>
הבעיה היא עם document.write
ראשית, תודה על הקישור.
שנית,גם אצלי זה עובד ככה, הבעיה היא איך להכניס את השורה
<input type="button" value=שלח onClick="updateJob('abc<%=i%>',<%=i%>)"><br>
לתוך document.write.
ניסיתי ככה:
document.write(" <input type="button" value="שלח" onClick="updateJob('abc<%=i%>',<%=i%>)"> ")
ואז לא קורה כלום …
נראה לי שהבעיה קשורה איכשהו לפרמטרים של הפונקציה updateJob.
הקוד שנתת עובד מצוין
הנה הקוד שאני עשיתי
<script type="text/javascript">
function updateJob(fName,ind)
{
alert(ind + " – " + document.all(fName).tipID.value + " – " + document.all(fName).tipTransaction.value)
}
<% for i=1 to 5 %>
document.write("<form name="abc<% =i %>">");
document.write("<input type="text" name="tipID" />");
document.write("<input type="text" name="tipTransaction" />");
document.write(" <input type="button" value="שלח" onClick="updateJob('abc<%=i%>',<%=i%>)"> ")
document.write("</form><br>");
<% next %>
</script>
כנראה שיש איזושהי בעיה אצלי
ניר, תודה רבה.
הקוד עובד גם אצלי כאשר הוא עומד בפני עצמו.
כאשר שילבתי אותו בתוך דף ASP אחר, עם עוד כמה דברים – שם זה לא עובד.
מקווה למצוא את הפתרון …
שוב תודה על הסבלנות
אופס, גיליתי את הטעות …
התבלבלתי בין 2 דפים שונים, ואכן ה-i לא היה מוגדר היות והוא לא בא מה-DB.
עכשיו,
איך בכל זאת מחברים את ה-i (שהוא משתנה לולאה "רגיל ביותר" )ל- abc
בשורה של:
//document.write("<form name="abc<%=i%>">");
תודה, וסליחה על הבילבול …
כמו שהראתי לך
הודעות שגיאה בסטטוס-בר
יש לי דף ASP עם קוד ב-JavaScript (פונקציות וכד')
בדרך כלל הכל עובד טוב ויפה, אבל, מידי פעם מופיעה בשורת הסטטוס בר אחת מההודעות הבאות:
Error on page
או
Done, but with errors on page
חלק מהנתונים שאמורים להיות מודפסים – מופיעים ואין שום הסבר אחר פרט להודעות הכלליות שרשמתי למעלה…
האם יש דרך להגיע אל הבעיות האמורות ???
דרך אגב (אם זה עוזר במשהו …) האתר נמצא בבריקסטר.
יש שני אפשרויות
שבפרסומת שלהם יש טעות בכתיבה או אצלך יש טעות בכתיבה בכל מקרה אין קשר ל-ASP כי ב-ASP אם יש שגיאה אז מופיעה לך הטעות במקום כל הדף
אז ככה שזה יכול להיות באחד מהסקריפטים בצד הלקוח שלך או הפרסומת של ברינקסטר
עוד שאלה
ישבתי מספר שעות והעליתי חרס בידי …
ראשית, תזכורת לקוד (הדוגמא של ניר)
<script type="text/javascript">
function updateJob(fName,ind)
{
alert(ind + " – " + document.all(fName).tipID.value + " – " + document.all(fName).tipTransaction.value)
}
<% for i=1 to 5 %>
document.write("<form name="abc<% =i %>">");
document.write("<input type="text" name="tipID" />");
document.write("<input type="text" name="tipTransaction" />");
document.write(" <input type="button" value="שלח" onClick="updateJob('abc<%=i%>',<%=i%>)"> ")
document.write("</form><br>");
<% next %>
</script>
ברצוני להשתמש בערכים שהועברו לפונקציה updateJob לצורך עדכון רשומה ב-DB בסגנון של:
update tips set Transaction=TipTransaction where ID=tipID
הבעיה היא שהצלחתי רק "לראות" את הערכים בתוך ה-Alert.
איך שומרים את הערכים הנ"ל בתוך משתנים, ואיך משתמשים בהם בתוך ה-ASP
תודה מראש ….
אפשר ב-XMLHTTP
להעביר לשרת נתונים מהלקוח (אם אני לא טועה) ואפשר גם ב-asp.net
את הערכים שמקבלים בפונקציה אפשר לשים בתוך משתנה כך :
<script type="text/javascript">
function updateJob(fName,ind)
{
var tip = new String(ind + " – " + document.all(fName).tipID.value + " – " + document.all(fName).tipTransaction.value)
}
<% for i=1 to 5 %>
document.write("<form name="abc<% =i %>">");
document.write("<input type="text" name="tipID" />");
document.write("<input type="text" name="tipTransaction" />");
document.write(" <input type="button" value="שלח" onClick="updateJob('abc<%=i%>',<%=i%>)"> ")
document.write("</form><br>");
<% next %>
</script>
שתי האפשרויות שהזכרת לא מוכרות לי
לצערי, עדיין לא התנסיתי לא ב- XMLHTTP ולא ב-ASP.net
אני אנסה להשתמש בקוד שנתת ונראה לאן זה יגיע …
XmlHTTP
זה אובייקט ויש עליו מאמר באתר במדור ASP
איך מוסיפים גרשיים לשורה הבאה …
Response.Write "<td><input type=text name=upCategory value=" & rs("Category") & " ></td>"
כדי שכל התוכן של Category יוצג ולא רק המילה הראשונה…
ניסיתי, פחות או יותר, את כל הצירופים האפשריים אך לשוא (בטח פיספסתי את זה הנכון …)
תודה.
השורה כקוד …
Response.Write "<td><input type=text name=upCategory value=" & rs("Category") & " ></td>"
נסה את זה:
Response.Write "<td><input type=text name=upCategory value="" & rs("Category") & "" ></td>"
לא עובד … הודעת שגיאה מצורפת
Expected end of statement
במקרה הכי גרוע, אשתמש ב- Textarea, אבל אני פשוט רוצה ללמוד כיצד לעשות זאת נכון …
ניסיתי גם לשמור את התוכן בתוך משתנה: אם המשתנה מודפס בפני עצמו – אין בעיה, אבל אם שם המשתנה מוכנס בתוך השורה – בעיה !
אולי זה יעבוד:
Response.Write "<td><input type=text name=upCategory value='" & rs("Category") & "' ></td>"
עובד גם עובד – אין כמוך !
תודה רבה.
ולמה זה לא עובד….
כי חסר גרשיים
Response.Write "<td><input type=text name=upCategory value="" & rs("Category") & """ ></td>"
קושיה לחג הפסח …
כתבתי טופס לחיפוש בטבלה, לפי מספר שדות. הנתונים עוברים עיבוד בדף ה-ASP והרשומות שמתאימות לשאילתא מוצגות (כאשר המילים שהוכנסו לטופס החיפוש מסומנות) . עד כאן הכל טוב ויפה ואפילו עובד. אבל ….
ברוב הפעמים מתקבל דף ריק עם שורת כותרת בלבד (בדרך כלל כאשר מילת החיפוש בעברית), למרות שאם מבצעים view source רואים שיש נתונים, כך שהעתקת התוכן לקובץ עם סיומת HTML מראה דף עם טבלה ורשומות !!!
<html dir=rtl>
<head>
</head>
<body>
<p> <h1> תוצאות השאילתא שביצעת:</h1>
<%@codepage=1255%>
<%
TranKeyword = Request("tTransaction")
CatKeyword = Request("tCategory")
DescKeyWord1 = Request.form("tDescription1")
DescKeyword2 = Request.form("tDescription2")
CommKeyword = Request("tComments")
dim con, rs, sql
Set Con = …
Con.Open …
set rs= …
if Session("UType")<>"A" then
sql = "select * from Tips WHERE Hide=false AND Transaction LIKE '%" & Request("tTransaction") & "%'AND Category LIKE '%" & Request("tCategory") & "%' AND Description LIKE '%" & Request.form("tDescription1") & "%' AND Description LIKE '%" & Request.form("tDescription2") & "%' AND Comments LIKE '%" & Request("tComments") & "%' order by Category"
else
sql = "select * from Tips WHERE Transaction LIKE '%" & TranKeyword
sql = sql & "%' AND Category LIKE '%" & CatKeyword
sql = sql & "%' AND Description LIKE '%" & DescKeyWord1
sql = sql & "%' AND Description LIKE '%" & DescKeyWord2
sql = sql & "%' AND Comments LIKE '%" & recComments
sql = sql & "%' order by Category"
end if
rs.Open sql, Con
Response.Write "<table align=center width=90% border=2 bordercolor=blue cellpadding=5> <tr>"
Response.Write "<th> טרנזקציה</th> <th> קטגוריה</th> <th> תאור</th><th> הערות</th> </tr>"
do until rs.EOF
recTransaction = rs("Transaction")
recTransaction = replace(recTransaction,TranKeyword,"<span style='color:red'>" & TranKeyword & "</span>")
recCategory = rs("Category")
recCategory = replace(recCategory,CatKeyword,"<span style='color:red'>" & CatKeyword & "</span>")
recDescription = rs("Description")
recDescription = replace(recDescription,DescKeyWord1,"<span style='color:red'>" & DescKeyWord1 & "</span>")
recDescription = replace(recDescription,DescKeyWord2,"<span style='color:red'>" & DescKeyWord2 & "</span>")
recDescription = replace(recDescription,vbcrlf,"<br>")
recComments = rs("Comments")
recComments = replace(recComments,TranKeyword,"<span style='color:red'>" & CommKeyword& "</span>")
Response.Write "<tr>"
Response.Write "<td>" & recTransaction & "</td>"
Response.Write "<td>" & recCategory & "</td>"
Response.Write "<td>" & recDescription & "</td>"
Response.Write "<td>" & recComments & "</td>"
Response.Write "</tr>"
rs.MoveNext
loop
2 הערות חשובות.
– האתר נמצא על ברינקסטר
– קובץ ASP דומה שנכתב לאפליקציה אחרת (גם בברינקסטר) מתפקד מצויין (האם יש קשר לעובדה ששם כל הטקסטים הם בעברית בלבד?)
אנא שרשר שאלותיך
אופס, קורה ….
ואין שום הודעת שגיאה?
לא ממש לא …
אבל, כפי שכתבתי, עם מסתכלים על הview source. יש קוד של דף מלא כולל טבלה, כולל הכל !!!
מה שכן, לפעמים אם עוברים לדף אחר (כאשר הדף "ריק"), דרך חלון הכתובות של הדפדפן, בשבריר השניה של המעבר – כל התוכן נגלה …
תעלומה של ממש !
המשך התעלומה – פתאום הכל עובד ….
לא שיניתי כלום !!!
פשוט עזבתי את המחשב לשעה והכל הסתדר – אולי בעייה של ברינקסטר.
בכל אופן,
תודה
מעולה- אבל שעה לא עברה עדיין
איך ניתן לשנות תוכן של תאים בטבלאות
פעם כתבתי אתר עם מסגרות, ובו ניתן היה ע"י לחיצה על לינק במסגרת אחת (נניח תפריט) לשנות תוכן של מסגרת שניה (נניח החלק הראשי של העמוד), או אפילו לשנות את התוכן של 2 המסגרות גם יחד (ע"י לחיצה אחת, פונק' JavaScript).
הבנתי שהמגמה היום היא "לרדת" מעיצובים של מסגרות ולבחור אלטרנטיבה אחרת כמו טבלאות (או CSS)
מצ"ב דף עם טבלה פשוטה:
בחלק העליון 3 תאים ובחלק התחתון תא ראשי.
איך ניתן ליישם:
לחיצה על AAA ==> התוכן של התא הראשי יהיה קובץ בשם AAA.html
לחיצה על BBB ==> התוכן של התא הראשי יהיה קובץ בשם BBB.html
לחיצה על CCC ==> התוכן של התא הראשי יהיה קובץ בשם CCC.html
אשמח לקבל דוגמא, כי חיפשתי ולא מצאתי …
תודה