שלח תשובה

זירת השאלות

476
צפיות
34
תשובות

כתיבת טופס בתוך פונקציה JavaScript

,‏ 6 באפריל, 2004

בוקר טוב וחג שמח

יש לי מספר שאלות בקשר לכתיבת טופס בתוך פונקציה של 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 תשובות

  1. ניר טייב הגיב:

    עליך להשתמש בסלאש לפני המרכאות


    document.write("<form name="abc">")

    הכנסת נתונים שמקבלים מהשרת <% = %> אפשר להכניס בכל מקום בדף זה לא מפריע.
    אתה מקבל רק את המילה הראשונה שבמשתנה בגלל שלא השתמשת בגרשיים

  2. apricot הגיב:

    תודה, אבל עדיין יש לי בעיה …
    לגבי השורה של :

    document.write("<br><input type=text name=tipTransaction id=tipTransaction value=" + checkVal + " size=100 >")

    ניסיתי לעטוף את ה- checkVal בגרשיים וזה לא עובד – אם שמים גרשיים בשני הצדדים של המשתנה checkVal התוכן שמתקבל הוא … checkVal
    ניסיתי גם להוסיף סלאש לפני הגרשיים…..

    האם תוכל לתת דוגמא בקוד?

    שוב, תודה.

  3. ניר טייב הגיב:

    התכוונתי שתשים
    גרשיים שיעטפו את התוכן של checkVal

    document.write("<br><input type="text" name="tipTransaction" id="tipTransaction" value="" + checkVal + "" size="100" >")

  4. apricot הגיב:

    בעיה חדשה, דומה אבל שונה …
    שלום,

    שוב נתקעתי, הפעם עם השורה הזו (המקור):

    <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)
    }

  5. ניר טייב הגיב:

    השאלה היא האם ה-i מוגדר?
    ואם זה לא זה אז מה השגיאה שאתה מקבל ?

  6. apricot הגיב:

    הבעיה היא ….
    ה-i אכן מוגדר, כי מתקבל תוכן של שדות בתוך הטופס.
    אין הודעת שגיאה(!) אבל לחיצה על הכפתור לא פותחת את החלון של ה-alert.
    כלומר – לא קורה כלום …..
    כפי שכתבתי בהודעה הקודמת, הטופס נוסה בפני עצמו בעבר -לא דרך document.write ועבד מצויין ומכאן המסקנה שמשהו בתחביר בעייתי.

    שאלה נוספת, האם יש איזשהו אתר שבו יש הסבר לגבי ההתייחסות לתווים מיוחדים או רשימה שלהם?

    תודה, וערב טוב

  7. ניר טייב הגיב:

    הנה
    בקשר לשאלה הנוספת אז הנה האתר (הילדה הביאה לי אותו בזמנו)
    http://www.webreference.com/js/tips/991005.html

    ובקשר לשאלה שלך אז לי זה כן עובד
    עשיתי את הקוד הבא (במקרה שה-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 %>

  8. apricot הגיב:

    הבעיה היא עם 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.

  9. ניר טייב הגיב:

    הקוד שנתת עובד מצוין
    הנה הקוד שאני עשיתי

    <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>

  10. apricot הגיב:

    כנראה שיש איזושהי בעיה אצלי
    ניר, תודה רבה.
    הקוד עובד גם אצלי כאשר הוא עומד בפני עצמו.
    כאשר שילבתי אותו בתוך דף ASP אחר, עם עוד כמה דברים – שם זה לא עובד.
    מקווה למצוא את הפתרון …

    שוב תודה על הסבלנות

  11. apricot הגיב:

    אופס, גיליתי את הטעות …
    התבלבלתי בין 2 דפים שונים, ואכן ה-i לא היה מוגדר היות והוא לא בא מה-DB.
    עכשיו,
    איך בכל זאת מחברים את ה-i (שהוא משתנה לולאה "רגיל ביותר" )ל- abc
    בשורה של:


    //document.write("<form name="abc<%=i%>">");

    תודה, וסליחה על הבילבול …

  12. apricot הגיב:

    הודעות שגיאה בסטטוס-בר
    יש לי דף ASP עם קוד ב-JavaScript (פונקציות וכד’)
    בדרך כלל הכל עובד טוב ויפה, אבל, מידי פעם מופיעה בשורת הסטטוס בר אחת מההודעות הבאות:
    Error on page
    או
    Done, but with errors on page

    חלק מהנתונים שאמורים להיות מודפסים – מופיעים ואין שום הסבר אחר פרט להודעות הכלליות שרשמתי למעלה…

    האם יש דרך להגיע אל הבעיות האמורות ???
    דרך אגב (אם זה עוזר במשהו …) האתר נמצא בבריקסטר.

  13. ניר טייב הגיב:

    יש שני אפשרויות
    שבפרסומת שלהם יש טעות בכתיבה או אצלך יש טעות בכתיבה בכל מקרה אין קשר ל-ASP כי ב-ASP אם יש שגיאה אז מופיעה לך הטעות במקום כל הדף
    אז ככה שזה יכול להיות באחד מהסקריפטים בצד הלקוח שלך או הפרסומת של ברינקסטר

  14. apricot הגיב:

    עוד שאלה
    ישבתי מספר שעות והעליתי חרס בידי …

    ראשית, תזכורת לקוד (הדוגמא של ניר)

    <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

    תודה מראש ….

  15. ניר טייב הגיב:

    אפשר ב-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>

  16. apricot הגיב:

    שתי האפשרויות שהזכרת לא מוכרות לי
    לצערי, עדיין לא התנסיתי לא ב- XMLHTTP ולא ב-ASP.net
    אני אנסה להשתמש בקוד שנתת ונראה לאן זה יגיע …

  17. ניר טייב הגיב:

    XmlHTTP
    זה אובייקט ויש עליו מאמר באתר במדור ASP

  18. apricot הגיב:

    איך מוסיפים גרשיים לשורה הבאה …
    Response.Write "<td><input type=text name=upCategory value=" & rs("Category") & " ></td>"

    כדי שכל התוכן של Category יוצג ולא רק המילה הראשונה…
    ניסיתי, פחות או יותר, את כל הצירופים האפשריים אך לשוא (בטח פיספסתי את זה הנכון …)

    תודה.

  19. apricot הגיב:

    השורה כקוד …


    Response.Write "<td><input type=text name=upCategory value=" & rs("Category") & " ></td>"

  20. אוריקס הגיב:

    נסה את זה:


    Response.Write "<td><input type=text name=upCategory value="" & rs("Category") & "" ></td>"

  21. apricot הגיב:

    לא עובד … הודעת שגיאה מצורפת


    Expected end of statement

    במקרה הכי גרוע, אשתמש ב- Textarea, אבל אני פשוט רוצה ללמוד כיצד לעשות זאת נכון …
    ניסיתי גם לשמור את התוכן בתוך משתנה: אם המשתנה מודפס בפני עצמו – אין בעיה, אבל אם שם המשתנה מוכנס בתוך השורה – בעיה !

  22. אוריקס הגיב:

    אולי זה יעבוד:


    Response.Write "<td><input type=text name=upCategory value=’" & rs("Category") & "’ ></td>"

  23. apricot הגיב:

    עובד גם עובד – אין כמוך !
    תודה רבה.

  24. ניר טייב הגיב:

    ולמה זה לא עובד….
    כי חסר גרשיים

    Response.Write "<td><input type=text name=upCategory value="" & rs("Category") & """ ></td>"

  25. apricot הגיב:

    קושיה לחג הפסח …
    כתבתי טופס לחיפוש בטבלה, לפי מספר שדות. הנתונים עוברים עיבוד בדף ה-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 דומה שנכתב לאפליקציה אחרת (גם בברינקסטר) מתפקד מצויין (האם יש קשר לעובדה ששם כל הטקסטים הם בעברית בלבד?)

  26. apricot הגיב:

    לא ממש לא …
    אבל, כפי שכתבתי, עם מסתכלים על הview source. יש קוד של דף מלא כולל טבלה, כולל הכל !!!

    מה שכן, לפעמים אם עוברים לדף אחר (כאשר הדף "ריק"), דרך חלון הכתובות של הדפדפן, בשבריר השניה של המעבר – כל התוכן נגלה …

    תעלומה של ממש !

  27. apricot הגיב:

    המשך התעלומה – פתאום הכל עובד ….
    לא שיניתי כלום !!!
    פשוט עזבתי את המחשב לשעה והכל הסתדר – אולי בעייה של ברינקסטר.
    בכל אופן,
    תודה

  28. apricot הגיב:

    איך ניתן לשנות תוכן של תאים בטבלאות
    פעם כתבתי אתר עם מסגרות, ובו ניתן היה ע"י לחיצה על לינק במסגרת אחת (נניח תפריט) לשנות תוכן של מסגרת שניה (נניח החלק הראשי של העמוד), או אפילו לשנות את התוכן של 2 המסגרות גם יחד (ע"י לחיצה אחת, פונק’ JavaScript).
    הבנתי שהמגמה היום היא "לרדת" מעיצובים של מסגרות ולבחור אלטרנטיבה אחרת כמו טבלאות (או CSS)
    מצ"ב דף עם טבלה פשוטה:
    בחלק העליון 3 תאים ובחלק התחתון תא ראשי.
    איך ניתן ליישם:
    לחיצה על AAA ==> התוכן של התא הראשי יהיה קובץ בשם AAA.html
    לחיצה על BBB ==> התוכן של התא הראשי יהיה קובץ בשם BBB.html
    לחיצה על CCC ==> התוכן של התא הראשי יהיה קובץ בשם CCC.html

    אשמח לקבל דוגמא, כי חיפשתי ולא מצאתי …

    תודה

שלח תשובה