У меня есть функция, которая проверяет, является ли пользователь записывает цифры в поле ввода:Что может быть причиной этого 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 дает мне NaN в «procentsumfield», и он не сохраняет новое значение, потому что это не число.
Что может быть причиной этого?
Благодаря
В JQuery [ 'event.which'] (http://api.jquery.com/category/events/event-object/) нормирована (и должно быть целое) –
FYI:' документ. все 'проверка - плохой. – epascarello
Рекомендация: не использовать live(); он устарел, использует on(); –