【问题标题】:How to check if form input has value如何检查表单输入是否有价值
【发布时间】:2011-02-05 00:06:16
【问题描述】:

我正在尝试检查表单输入是否有任何值(无论该值是什么),以便我可以将该值附加到提交时的操作 URL(如果它确实存在)。我需要在添加值之前添加参数的名称,并且只留下一个空白的参数名称,例如“P =”而没有任何值会弄乱页面。

这是我的代码:

function getParam() {

// reset url in case there were any previous params inputted

    document.form.action = 'http://www.domain.com'

    if (document.getElementById('p').value == 1) {
        document.form.action += 'P=' + document.getElementById('p').value;
    }

    if (document.getElementbyId('q').value == 1) {
        document.form.action += 'Q=' + document.getElementById('q').value;
    }

}

和形式:

<form name="form" id="form" method="post" action="">
    <input type="text" id="p" value="">
    <input type="text" id="q" value="">
    <input type="submit" value="Update" onClick="getParam();">
</form>

我认为设置 value == 1 会做一个简单的存在,不存在检查,不管提交的值是什么,但我想我错了。

另外,我正在使用 if 语句,但我认为这是糟糕的代码,因为我没有 else。也许,使用 switch 语句,虽然我不确定我将如何设置它。也许:

switch(value) {
    case document.getElementById('p').value == 1 :
        document.form.action += 'P=' + document.getElementById('p').value; :
    case document.getElementById('q').value == 1 :
        document.form.action += 'Q=' + document.getElementById('q').value; break;
}

【问题讨论】:

  • 如果您的输入字段没有名称,您将不会提交任何内容。
  • 是的,但在这种情况下,表单只是用于更新 url,因为我是通过 id 获取这些输入的值,所以这并不是必需的。
  • 您确实意识到您可以将您的方法更改为GET,并且这些值将附加到查询字符串中?您应该能够毫无问题地在服务器端处理空值; 弄乱页面是什么意思?
  • 以 RESTfully 方式进行操作stackoverflow.com/questions/671118/…

标签: javascript forms conditional


【解决方案1】:
var val = document.getElementById('p').value;
if (/^\s*$/.test(val)){
   //value is either empty or contains whitespace characters
   //do not append the value
}
else{
   //code for appending the value to url
}

P.S.:它比检查 value.length 更好,因为 ' '.length = 3。

【讨论】:

  • 这似乎相反。当我将该字段留空时,它会附加没有值的 P=(因为它是空白的),当我输入内容时,它不会附加任何内容。
  • :) 当if 子句评估为false 时,您应该附加
  • 为什么不直接反转 if,因为一个分支是空的?例如if (!/^\s*$/.test(val)) { //...
  • 啊,哈哈。我误解了你在测试什么。我以为您正在测试任何字符(这基本上是 CMS 所说的)与空字符或空白字符(您明确表示,doh!)。多谢。就像一个后续问题一样,没有 else 的 if 语句是不好的做法吗?
  • @George: 随便用你喜欢的,我个人用 switch 很少。
猜你喜欢
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2021-03-28
相关资源
最近更新 更多