#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
У меня странная ошибка, когда я выполняю загрузку ajax из входных данных. Я понимаю, что это может быть глупым способом, но это был единственный способ, который я нашел, чтобы заставить IE сотрудничать с использованием клавиши enter. Затем у меня возникла отдельная проблема, связанная с тем, что отправка в IE продолжала открывать новое окно, а не просто использовать Ajax GET . Итак .. Я полностью отказался от формы и пытаюсь делать все с помощью javascript.. что-то вроде этого :
<input class="myInput" type="text"></input>
<img src="submitbutton" class="submitIt" />
Я запускаю функцию ajax с :
$('.submitbutton').click{function() { ajaxFunction(); });
который работает нормально.
а также когда пользователь нажимает enter:
$('.myInput').keydown(function(e){
if (e.keyCode == 13) {
ajaxFunction();
return false;
}
который работает.. для первой записи. Но затем, если вы введете второе число, это сделает этот ajax-запрос 2 раза, третье число = теперь происходит 3 одновременных ajax-запроса в одно и то же место, до бесконечности…
Я почти уверен, что проблема в том, что я неправильно настроил проверку. Функция keydown находится в else {} состоянии, подобном этому, и не будет работать, пока во входных данных не будет ровно 9 чисел.. вот часть этого :
if ( len !== 9 )
{
if ( len == 1 )
{ y.hide(); n.show(); valInput.text("You need 8 more numbers");
}
else
{
if ( len == 2 )
{ y.hide(); n.show(); valInput.text("You need 7 more numbers");
}
...
}
else {
$('.myInput').keydown(function(e){
if (e.keyCode == 13) {
ajaxFunction();
return false;
}
}
Извините, у меня нет доступного живого кода, и мне потребовалось бы некоторое время, чтобы настроить его, но если это то, что должно произойти, я это сделаю.
Ответ №1:
У меня странная ошибка, когда я выполняю загрузку ajax из входных данных. Я понимаю, что это может быть глупым способом, но это был единственный способ, который я нашел, чтобы заставить IE сотрудничать с использованием клавиши enter
Возможно, вы используете версию IE. Но нажатие клавиши enter вызывает отправку здесь.
Затем у меня возникла отдельная проблема, связанная с тем, что отправка в IE продолжала открывать новое окно, а не просто использовать Ajax GET . Итак .. Я полностью отказался от формы и пытаюсь делать все с помощью javascript.. что-то вроде этого :
Вам действительно нужно выяснить, почему это происходит, вместо того, чтобы пытаться писать хаки. Это часть игры, а также процесса обучения, и это просто способ сделать это.
Почему бы вам просто не использовать .submit()
и «обычную» кнопку отправки, например:
<form action="#">
<input type="text" name="myInput">
<input type="image" src="submitbutton" class="submitIt">
</form>
$(function() {
// use this instead of clicking on submit or enter key pressed
$('form').submit(function() {
// get character count of input
var char_count = $('input[name="myInput"]', this).val();
// validate it
if (char_count != 9) {
// still need to initialize y, n and valInput
y.hide();
n.show();
// watch out this may give negative numbers
// this will take care if the error to be displayed. way better than using lots of ifs :)
valInput.text('You need ' parseInt(9-char_count, 0) ' more characters');
return false;
}
// can be uncommented if you still want to use AJAX to submit your form, but really it is not needed.
//ajaxFunction();
//return false;
});
});
Комментарии:
1. Спасибо PeeHaa.. Я буду работать с этим. Я не использовал ajax только потому, что не хотел иметь дело с формой, но это необходимо, потому что входные данные передают значение в качестве данных в rest, а затем анализируют возвращаемый json.
2. @Zac: Без проблем, просто раскомментируйте эти строки 🙂 Если вам нужна дополнительная помощь (например, путем устранения возникших у вас проблем с IE), просто дайте мне знать.
3. Привет, ПиеХаа, еще раз спасибо.. Мне нужно было просто вернуться к форме, и теперь она работает нормально. Ваш скрипт намного красноречивее, и я бы хотел заставить его работать, но он не работает после первой цифры. Затем все становится отрицательным. Я хочу добавить это в скрипку и поиграть с ним еще немного .. вероятно, в конечном итоге создам для этого новый вопрос SO.
4. @Zac: Теперь я вижу, что допустил ошибку. Я как раз собирался идти домой с работы. Я исправлю это сегодня вечером и обновлю код