gpt4 book ai didi

javascript - 。裹();破坏 prevent.Default();

转载 作者:行者123 更新时间:2023-11-29 14:57:15 25 4
gpt4 key购买 nike

我已经编写了一个自定义表单验证脚本,但出于某种原因,包装 input[type=text] <div class="inputWrapper" /> 中的元素阻止我阻止 input[type=submit]的默认设置。

相关代码如下:

$("input[type=text]").wrap("<div class=\"inputWrapper\" />");

打破:

$("input[type=submit]").click(function(event) {
event.preventDefault();
});

为什么会这样?如果您需要更完整的脚本,请告诉我,我会发布整个脚本。

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

// wrap inputs

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

它工作正常。这是完整的脚本,是什么导致了这种怪异现象?

    $(document).ready(function() {
// wrap inputs
$("input[type=text]").wrap("<div class=\"inputWrapper\" />");
$("textarea").wrap("<div class=\"inputWrapper\" />");
// validate text inputs on un-focus
$("input[type=text].required").blur(function() {
if ($(this).hasClass("error")) {
// do nothing
} else if ($(this).val() === "") {
$(this).addClass("error");
$(this).parent(".inputWrapper").append("<div class=\"errorPopup\">" + $(this).attr("placeholder") + "</div>");
}
});
// validate textareas on un-focus
$("textarea.required").blur(function() {
if ($(this).hasClass("error")) {
// do nothing
} else if ($(this).val() === "") {
$(this).addClass("error");
$(this).parent(".inputWrapper").append("<div class=\"errorPopup\">" + $(this).attr("placeholder") + "</div>");
}
});

// validate on form submit
$("input[type=submit]").click(function(event) {
event.preventDefault();
// check fields

$(this).parent("form").children("input.required").each(function() {
// check textboxes

if ($(this + "[type=text]")) {
if (!$(this).val()) {
$(this).addClass("error");
};
};

// end textboxes
// check textareas
$(this).parent("form").children("textarea.required").each(function() {
if (!$(this).val()) {
$(this).addClass("error");
};
});

// end textareas
// check checkboxes and radio buttons
if ($(this).is(":checkbox") || $(this).is(":radio")) {
var inputName = $(this).attr("name");
if (!$("input[name=" + inputName + "]").is(":checked")) {
var inputId = $(this).attr("id");
$("label[for=" + inputId + "]").addClass("error");
};
};

// end checkboxes and radio buttons
});

// end fields
// submit form
var errorCheck = $(this).parent("form").children(".error").length > 0;
if (errorCheck == 0) {
$(this).parent("form").submit();
} else {
alert("You didn't fill out one or more fields. Please review the form.");
window.location = "#top";
};
// end submit form
});
// clear errors
$("input.required").each(function() {
// clear textboxes
if ($(this + "[type=text]")) {
$(this).keypress(function() {
$(this).removeClass("error");
$(this).next(".errorPopup").remove();
});
};
// end textboxes
// clear textareas
$("textarea.required").each(function() {
$(this).keypress(function() {
$(this).removeClass("error");
$(this).next(".errorPopup").remove();
});
});
// end textareas
// check checkboxes and radio buttons
if ($(this).is(":checkbox") || $(this).is(":radio")) {
var inputName = $(this).attr("name");
var labelFor = $(this).attr("id");
$(this).click(function() {
$("input[name=" + inputName + "]").each(function() {
var labelFor = $(this).attr("id");
$("label[for=" + labelFor + "]").removeClass("error");
});
});
};
// end checkboxes and radio buttons
});
// end clear textbox errors
});

好吧,我错了。它与我认为的那条线有关,但实际上在查找 .error 时遇到了问题在我包装输入之后。

这里是问题所在:

var errorCheck = $(this).parent("form").children(".error").length > 0;`\

最佳答案

var errorCheck = $(this).parent("form").children(".error").length > 0;

当您.wrap 文本输入时,它们不再是表单的子项。使用 .find

顺便说一句,$(this + "selector") 无效。您可能想使用 $(this).is("selector")

关于javascript - 。裹();破坏 prevent.Default();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15812477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com