我有檢查,如果用戶在輸入框中寫入位的函數:什麼可能導致這個JavaScript NaN在IE 7中?
var letters = 'ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcçdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ';
var numbers = '1234567890';
var signs = ',.:;@-\'';
var mathsigns = '+-=()*/';
var custom = '<>#$%&?¿';
function alpha(event) {
var k;
k = document.all ? parseInt(event.keyCode) : parseInt(event.which);
return (numbers.indexOf(String.fromCharCode(k)) != -1);
}
此功能用下面的函數,即取位並把它發送到一個控制器一起使用,從而節省了數據庫中的數字。但是,只有當數字與原始數字不同時,首先出現在輸入框中。它還更新另一個輸入框,與和關閉具有相同ROW_ID屬性作爲觸發事件的輸入框中的所有特定的輸入:
function initializeUpdateNumberProcentMatrix() {
$(".numberfield").live('keypress', alpha);
//$(".numberfield").live('keypress', alpha(numbers));
$('.numberfield').live('focus', function() {
$(this).attr('oldvalue', $(this).val());
});
$('.numberfield').live('blur', function() {
// Dette er den nuværende værdi i tekstboksen
var value = $(this).val();
var oldvalue = $(this).attr('oldvalue');
// Reference til tekstboksen
var obj = $(this);
// Hvis værdien ikke har ændret sig, skal der ikke foretages noget (hvis man tabulerer)
if (value == $(this).attr('oldvalue')) {
return;
}
else {
var dif = value - $(this).attr('oldvalue');
var newval;
$('.procentsumfield').each(function (index) {
if ($(this).attr('row-id') == obj.attr('row-id')) {
newval = (parseInt($(this).val()) + parseInt(dif));
// Hvis summen overstige 100, skal der ikke foretages nogle ændringer - Textboksens værdi skal tilbagestilles, og sumfeltet skal ikke odateres
if (newval > 100) {
obj.val(oldvalue);
alert("Summen for det pågældende år må ikke overstige 100%");
return;
}
else {
$(this).val(newval);
return false;
}
}
});
var number = { Column_ID: $(this).attr('column-id'),
Row_ID: $(this).attr('row-id'),
Question_ID: $(this).attr('question-id'),
Value: $(this).val(),
Type: "Procent"
};
// Hvis den nye værdi overstiger 100, skal det ikke gemmes
if (newval <= 100) {
saveNumberMatrix($(this), number, "/SaveSurveyAnswers/SaveProcentMatrix");
}
}
});
}
的問題是,有時IE 7給了我楠的「procentsumfield」輸入框,它不保存新值,因爲它不是數字。
什麼可能導致這種情況發生?
由於
在jQuery中['event.which'](http://api.jquery.com/category/events/event-object/)被歸一化(並且應該是int) –
供參考:'文檔。所有的檢查都不好。 – epascarello
建議:不要使用live();它被棄用,使用on(); –