Javascript .wrap();破坏prevent.Default();

Javascript .wrap();破坏prevent.Default();,javascript,jquery,preventdefault,Javascript,Jquery,Preventdefault,我已经编写了一个自定义表单验证脚本,但由于某些原因,在中包装input[type=text]元素会阻止我阻止input[type=submit]的默认设置 以下是相关代码: $(“输入[type=text]”。换行(“”) 正在中断: $("input[type=submit]").click(function(event) { event.preventDefault(); }); 为什么会这样?如果你需要一个更完整的脚本,让我知道,我只是张贴整个事情 好吧,出于某种原因,禁用该行代

我已经编写了一个自定义表单验证脚本,但由于某些原因,在
中包装
input[type=text]
元素会阻止我阻止
input[type=submit]
的默认设置

以下是相关代码:

$(“输入[type=text]”。换行(“”)

正在中断:

$("input[type=submit]").click(function(event) {
    event.preventDefault();
});
为什么会这样?如果你需要一个更完整的脚本,让我知道,我只是张贴整个事情

好吧,出于某种原因,禁用该行代码允许
输入[type=submit]
上的
.preventDefault
工作,但如果我只使用

// wrap inputs

    $("input[type=text]").wrap("<div class=\"inputWrapper\" />");
    // validate on form submit
    $("input[type=submit]").click(function(event) {
        event.preventDefault();
    });

您需要使用新的DOM元素维护某种引用。这将首先将其作为初始化的DOM元素放置在变量中(而不是像您那样作为字符串),并将其作为原始元素放置,原始元素将重新放置以维护事件:

var $inputWrapper = $("<div class=\"inputWrapper\" />"),
    $inputText = $("input[type=text]");
$inputText.wrap("<div class=\"inputWrapper\" />");
var$inputWrapper=$(“”),
$inputText=$(“输入[type=text]”);
$inputText.wrap(“”);
然后您可以将该元素替换回中

var errorCheck = $(this).parent("form").children(".error").length > 0;
当您
.wrap
文本输入时,它们不再是表单的子项。使用
。查找


顺便说一下,
$(此+“选择器”)
无效。您可能想使用
$(this).is(“选择器”)

我更改了
$(this+“选择器”)
这件事,但我在
.find()方面遇到了问题
,它似乎不适用于
长度。你能给我举个例子说明这应该如何工作吗?这不起作用:
var errorCheck=$(This).parent(“form”).find(.error”).length>0不用担心,它似乎有效。不知道我的问题是什么。谢谢。@Rev对我来说似乎很好。可能问题是您只在blur上添加了
.error
类。
var $inputWrapper = $("<div class=\"inputWrapper\" />"),
    $inputText = $("input[type=text]");
$inputText.wrap("<div class=\"inputWrapper\" />");
var errorCheck = $(this).parent("form").children(".error").length > 0;