Προσπάθησα να εκχωρήσω μια νέα τιμή στην κρυφή είσοδο και στο πλαίσιο ελέγχου μιας φόρμας εισόδου. Λειτουργεί μια χαρά στον Firefox, αλλά όχι στον IE (χρησιμοποιώ τον IE 7). Γνωρίζει κανείς τι είναι λάθος με τον κώδικά μου;
HTML:
<input type="hidden" id="msg" name="msg" value="" style="display:none"/>
<input type="checkbox" name="sp" value="100" id="sp_100">
Javascript:
var Msg="abc";
document.getElementById('msg').value = Msg;
document.getElementById('sp_100').checked = true;
Ο κώδικας που επικολλήσατε θα πρέπει να λειτουργεί... Πρέπει να υπάρχει κάτι άλλο που δεν βλέπουμε εδώ.
Check this out. Δουλεύει για μένα μια χαρά στον IE7. Όταν υποβάλλετε θα δείτε τη μεταβλητή που περνάει στο URL.
Jin Yong - Ο IE έχει ένα πρόβλημα με τη μόλυνση της παγκόσμιας εμβέλειας με αναφορές αντικειμένων σε οποιαδήποτε στοιχεία DOM με ένα "name" ή "id" χαρακτηριστικό που έχει οριστεί στο "αρχικό" φορτίο σελίδας.
Συνεπώς, ενδέχεται να έχετε προβλήματα λόγω του ονόματος της μεταβλητής σας.
Δοκιμάστε αυτό και δείτε αν λειτουργεί.
var someOtherName="abc";
// ^^^^^^^^^^^^^
document.getElementById('msg').value = someOtherName;
document.getElementById('sp_100').checked = true;
Υπάρχει η πιθανότητα (στον αρχικό σας κώδικα) ο IE να προσπαθεί να ορίσει την τιμή της εισόδου σε μια αναφορά σε αυτό το πραγματικό στοιχείο (αγνοώντας το σφάλμα), αλλά να μην σας αφήνει καμία νέα τιμή.
Λάβετε υπόψη ότι στον IE6/IE7 η περίπτωση δεν έχει σημασία για την ονομασία αντικειμένων. Ο IE πιστεύει ότι τα "foo" "Foo" και "FOO" είναι όλα το ίδιο αντικείμενο.
Ρίξτε μια ματιά στην jQuery, μια βιβλιοθήκη για όλους τους φυλλομετρητές που θα κάνει τη ζωή σας πολύ πιο εύκολη.
var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');