通过javascript或jquery重置表单时出现问题

通过javascript或jquery重置表单时出现问题,javascript,jquery,forms,jsp,validation,Javascript,Jquery,Forms,Jsp,Validation,我有下面的jQuery函数,当我在页面上单击按钮时会调用它。此按钮用于重置表单并重新加载新页面 function Create(txt) { if (txt="createUser") { document.forms[0].reset(); $('#myform').each(function() { this.reset(); }); $('input[name=method]').val(txt

我有下面的jQuery函数,当我在页面上单击按钮时会调用它。此按钮用于重置表单并重新加载新页面

function Create(txt) {
    if (txt="createUser") {
        document.forms[0].reset();
        $('#myform').each(function() {
            this.reset();
        });
        $('input[name=method]').val(txt);
        document.forms[0].submit();
    }
}
但由于某些原因,它根本没有转到this.reset,我在action类中看到了所有表单值。我应该如何解决这个问题

下面是按钮的定义方式

<input type="button" value="Create" class="btn" onclick="Create('createUser');">

您可以使用html代码代替java脚本

<input type="reset" value="Reset">

您似乎正在设置一个变量-

if (txt="createUser"){...
改为-

if (txt == "createUser") {..

这样,您就可以进行比较,而不是设置变量。

该按钮没有type=reset,因此请将其更改为reset或使用

document.getElementByIdmyform.reset;而不是

document.forms[0].reset();
$('#myform').each(function(){
          this.reset();
    });

正如其他人所指出的,您应该有==,但这意味着if语句总是正确的。然而,这并不是您在我的action类中看到所有表单值的原因

我认为问题可能是你误解了重置方法的作用。它不会清除所有的输入值;相反,它会将它们重置为原始值,即值属性中的值

您可能希望自己清除它们,而不是使用重置方法

注意:匹配所有输入、文本区域、选择和按钮元素

注意:OP似乎不希望清除隐藏的输入,但希望清除复选框和单选按钮。

我希望这样做:

$(document).ready(function() {
    $("#createUserButton").on("click", function() {
        var form = $("#myForm")[0];
        form.reset();
        $("input[name=method]").val("CreateUser");
        form.submit();
    }
});
$("#methodName").val("CreateUser");
您的按钮变成:

<input type="button" value="Create" class="btn" id="createUserButton">
您的代码是错误的,如果您应该使用==或===而不是just=,并且您的表单应该调用reset方法。不需要使用每个id迭代id,即使是因为id在HTML页面中必须是唯一的


这是一个工作,只需在第一个输入中键入某个内容即可看到它的发生。

虽然它确实需要修复,但if将计算赋值为true并在if块中输入代码,因此这不是阻止其表单重置的原因。您能为您的表单显示其余代码吗?另外,在您的代码中需要解决的一些问题:1将if txt=createUser{更改为if txt===createUser{,这样它实际上是在进行比较,而不是为txt变量赋值,2您调用的方式。使用jQuery重置为$'myform'[0].reset;…a您使用的是一个id选择器,因此将只返回一个元素,不需要。每个和b.reset都是一个JS方法,而不是jQuery方法,因此您需要在DOM引用$'myform'[0]上运行它,而不是jQuery对象,3对于jQuery,这需要格式化为:$this。我认为如果OP的表单中有一些选择和文本区域,您也应该提供清理它们的代码。@PhilippeGioseffi-the':input'选择器也匹配选择和文本区域。您可能认为我刚刚有了“input”。我修改了答案,但在put:not:button“因为“:input”选择器也与按钮匹配,我认为OP不希望清除这些按钮。完全正确,答案完美。@DJR-我修改了我的答案,以匹配我认为您需要的内容。我认为最好使用.prop而不是removeAttr。
<input type="button" value="Create" class="btn" id="createUserButton">
<input type="text" name="method" id="methodName" />
$("#methodName").val("CreateUser");