it-swarm.com.ru

Как сбросить форму, используя jQuery с методом .reset ()

У меня был рабочий код, который мог сбросить форму, когда я нажимал кнопку сброса. Однако после того, как мой код становится длиннее, я понимаю, что он больше не работает. 

 <div id="labels">
        <table class="config">
            <thead>
                <tr>
                    <th colspan="4"; style= "padding-bottom: 20px; color:#6666FF; text-align:left; font-size: 1.5em">Control Buttons Configuration</th>
                </tr>
                <tr>
                    <th>Index</th>
                    <th>Switch</th>
                    <th>Response Number</th>
                    <th>Description</th>
                </tr>
            </thead>
            <tbody>

                <form id="configform" name= "input" action="#" method="get">
                <tr><td style="text-align: center">1</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" value="" id="number_one"></td>
                    <td><input style="background: white; color: black;" type="text"  id="label_one"></td>
                </tr>
                <tr>
                    <td style="text-align: center">2</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id = "number_two" value=""></td>
                    <td><input style="background: white; color: black;" type="text"  id = "label_two"></td>
                </tr>
                <tr>
                    <td style="text-align: center">3</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id="number_three" value=""></td>
                    <td><input style="background: white; color: black;" type="text" id="label_three"></td>
                </tr>
                <tr>
                    <td style="text-align: center">4</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id="number_four" value=""></td>
                    <td><input style="background: white; color: black;" type="text" id="label_three"></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" id="configsubmit" value="Submit"></td>
                </tr>
                <tr>
                    <td><input type="reset" id="configreset" value="Reset"></td>
                </tr>

                </form>
            </tbody>
        </table>

    </div>

И мой JQuery:

 $('#configreset').click(function(){
            $('#configform')[0].reset();
 });

Есть ли какой-то источник, который я должен включить в свои коды, чтобы метод .reset() работал? Ранее я использовал:

<script src="static/jquery.min.js">
</script>
<script src="static/jquery.mobile-1.2.0.min.js">
</script>

и метод .reset() работал. 

В настоящее время я использую

<script src="static/jquery-1.9.1.min.js"></script>      
<script src="static/jquery-migrate-1.1.1.min.js"></script>
<script src="static/jquery.mobile-1.3.1.min.js"></script>

Может ли это быть одной из причин?

216
yvonnezoe

Я наконец-то решил проблему !! @ RobG был прав насчет тега form и тега table. тег form должен находиться вне таблицы. с этим, 

<td><input type="reset" id="configreset" value="Reset"></td>

работает без необходимости jquery или чего-либо еще. просто нажмите на кнопку и тадаа ~ вся форма сбрасывается;) блестяще!

16
yvonnezoe

вы можете попробовать использовать trigger () Ссылка Ссылка

$('#form_id').trigger("reset");
346
SagarPPanchal

http://jsfiddle.net/8zLLn/

  $('#configreset').click(function(){
        $('#configform')[0].reset();
  });

Поместите это в скрипку JS. Работал как задумано. 

Таким образом, ни один из вышеупомянутых вопросов не виноват здесь. Может быть, у вас конфликтующая проблема с удостоверением личности? Клик действительно выполняется?

Правка: (потому что я грустный мешок без должных комментариев) Это не проблема напрямую с вашим кодом. Он отлично работает, когда вы вынимаете его из контекста страницы, которую вы используете в данный момент, поэтому вместо того, чтобы быть чем-то с конкретными jQuery/javascript и атрибутивными данными формы, это должно быть что-то другое. Я бы начал разбивать код на части и пытаться выяснить, где он происходит. Я имею в виду, просто чтобы "убедиться", я полагаю, вы могли бы ...

console.log($('#configform')[0]);

в функции щелчка и убедитесь, что он нацелен на правильную форму ...

и если это так, это должно быть что-то, что не указано здесь.

отредактируйте часть 2: Одна вещь, которую вы можете попробовать (если она не нацелена правильно), это использовать «input: reset» вместо того, что вы используете ... также, я бы посоветовал, потому что это не цель, которая неправильно работает, чтобы выяснить, на что нацелен настоящий клик. Просто откройте инструменты Firebug/Developer, что у вас есть, бросить в 

console.log($('#configreset'))

и посмотреть, что всплывает. и тогда мы можем идти оттуда.

259
FullOnFlatWhite

Согласно этому посту здесь , jQuery не имеет метода reset(); но родной JavaScript делает. Итак, преобразуйте элемент jQuery в объект JavaScript, используя: 

$("#formId")[0].reset()
// or
$("#formId").get(0).reset()
103
Kevin

Это одна из тех вещей, которые на самом деле проще сделать в Vanilla Javascript, чем в jQuery. У jQuery нет метода reset, но есть элемент формы HTML, поэтому вы можете сбросить все поля в форме следующим образом:

document.getElementById('configform').reset();

Если вы сделаете это через jQuery (как видно из других ответов здесь: $('#configform')[0].reset()), [0] извлекает тот же элемент DOM формы, который вы получили бы напрямую через document.getElementById. Последний подход более эффективен и прост (хотя с подходом jQuery вы сначала получаете коллекцию, а затем должны извлечь из нее элемент, тогда как с помощью Vanilla Javascript вы просто получаете элемент напрямую).

42
Nick F

Кнопка сброса вообще не нуждается в каком-либо скрипте (или имени или идентификаторе):

<input type="reset">

и вы сделали. Но если вы действительно должны используете скрипт, обратите внимание, что каждый элемент управления формы имеет свойство form, которое ссылается на форму, в которой он находится, так что вы можете сделать:

<input type="button" onclick="this.form.reset();">

Но кнопка сброса - намного лучший выбор.

20
RobG

Используя функцию jquery .closest (элемент) и .find (...) .

Получение элемента parent и поиск child .

Наконец, сделайте нужную функцию.

$("#form").closest('form').find("input[type=text], textarea").val("");
11
aldrien.h

Я использую этот простой код:

//reset form 
$("#mybutton").click(function(){
    $("#myform").find('input:text, input:password, input:file, select, textarea').val('');
    $("#myform").find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');
});
10
fausto

Вы можете просто добавить тип ввода = сброс с помощью id = resetform, как это

<html>
<form>
<input type = 'reset' id = 'resetform' value = 'reset'/>
<!--Other items in the form can be placed here-->
</form>
</html>

затем с помощью jquery вы просто используете функцию .click () для элемента с id = resetform следующим образом

<script> 
$('#resetform').click();
</script>

и форма сбрасывается Примечание: Вы также можете скрыть кнопку сброса с помощью id = resetform, используя вашу CSS

<style>
#resetform
{
display:none;
}
</style>
5
Chuksy
<button type="reset">Reset</reset>

Простейший способ, которым я могу думать, это надежно. Поместите в форму тега.

3
luminancedesign

Первая строка сбросит входные данные формы

$('#AddRowform').trigger("reset"); 
$('#AddRowform select').trigger("change");

Второй сбросит select2

2
Ali Jamal

С помощью этой функции сброса jQuery возможен быстрый сброс полей формы.

когда вы получите успешный ответ, стреляйте ниже кода.

$(selector)[0].reset();

1
Kiran Kanzar

Ваш код должен работать. Убедитесь, что static/jquery-1.9.1.min.js существует. Кроме того, вы можете попробовать вернуться к static/jquery.min.js. Если это решит проблему, то вы точно ее определили.

0
ic3b3rg

Вот простое решение с Jquery. Это работает во всем мире. Посмотрите на код.

$('document').on("click", ".clear", function(){
   $(this).closest('form').trigger("reset");
})

Добавить чистый класс для кнопки в каждой форме, вам нужно сбросить его. Например: 

<button class="button clear" type="reset">Clear</button>
0
Ijharul Islam