【问题标题】:jQuery: Check whether val() has a specific value or not upon form submitjQuery:在表单提交时检查 val() 是否具有特定值
【发布时间】:2011-10-20 22:01:43
【问题描述】:

我正在尝试检查 val() 是否在表单中具有特定值,如果是,则删除内容/阻止提交表单,具体取决于是否填写了两个字段(stringOne 和 stringTwo)。每个输入字段都有一个默认文本,第一个是“Namn, telefonnr, sökord”,第二个是“Område, plats, ort”。如果用户只填写第一个字段,则必须在传递表单字符串之前清除第二个字段,反之亦然。 像这样-

// "This" refers to the form's submit button
if (($(this).siblings('input.stringOne').val("Namn, telefonnr, sökord")) && ($(this).siblings('input.stringTwo').val("Område, plats, ort"))) {
    return false; // If nothing's filled in, then do not submit
} else {
    // If either field is not filled in, clear it
    if ($(this).siblings('input.stringOne').val("Namn, telefonnr, sökord")) {
        $(this).siblings('input.stringOne').val() == '';
    }
    if ($(this).siblings('input.stringTwo').val("Område, plats, ort")) {
        $(this).siblings('input.stringTwo').val() == '';
    }
}

jQuery 版本 1.2.6。

【问题讨论】:

  • jQuery 版本 1.2.6?为什么? O.o
  • 是的,很遗憾,目前无法升级网站的脚本。

标签: jquery forms


【解决方案1】:

在 jQuery 中,当您在 val() 中放置一个值时,您就是在设置该值。

$('myElement').val()  // returns the value

$('myElement').val('some string')  // sets the value

.val() - http://api.jquery.com/val/

var $strOne = $(this).siblings('input.stringOne');
var $strTwo = $(this).siblings('input.stringTwo');

// "This" refers to the form's submit button
if ( (!$strOne.val() || $strOne.val() == "Namn, telefonnr, sökord") && (!$strTwo.val() || $strTwo.val() == "Område, plats, ort" ) {
    return false; // If nothing's filled in, then do not submit
} else {
    // If either field is not filled in, clear it
    if ($strOne.val() == "Namn, telefonnr, sökord") {
        $strOne.val("");
    }
    if ($strTwo.val() == "Område, plats, ort" ) {
        $strTwo.val("");
    }
}

【讨论】:

  • 我正要得出这个结论 :) 也尝试检查 val() == '' 但没有结果。
  • @Staffan - 我对你使用.siblings() 有点困惑。是否只有 2 个输入字段,.stringOne.stringTwo
  • 帕特里克你是对的。之前我指的是一个单一的输入字段,因此使用了兄弟姐妹。我会删除它们:)
  • @Staffan - 我没有注意到$(this) 提到了提交按钮(即使你说了)。现在说得通了。
  • 我尝试了您的代码,但它不起作用,请记住两个字段中已经存在值(默认值“Namn, telefonnr, sökord”和“Område, plats, ort”)。跨度>
【解决方案2】:

我希望这对某人有用:

这段代码

if ($('#my_text_field').val() == "Clear Me") {
    $('#my_text_field').val("");

可以写

$('#my_text_field[value="Clear Me"]').val("");

更好

$('#my_text_field[value="Clear Me"]').val("").change();

.change() 的效果是 $('#my_text_field[value="Clear Me"]') 在其值更改后将不匹配 #my_text_field

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多