从表单输入中修剪空格?

时间:2011-11-14 11:36:15

标签: javascript validation

你好,所以我试图修剪白色空格,当用户输入空格时,他得到一个错误,说明他应该输入有效的字符,但是如果他使用:' test '在数据库中输入相同的值吗?需要在javascript中再次修剪它?

function validateForm()
{
    if(trim(document.insert.aname.value) ==="")
    {
      alert("Animal should have a name");
      document.insert.aname.focus();
      return false;
    }
}
function trim(value) {
    return value.replace(/^\s+|\s+$/g,"");
}
你能帮帮忙吗? 输入页面是.JSP

3 个答案:

答案 0 :(得分:9)

你实际上并没有修改输入。你想要这个:

//store the input in a variable
var nameInput = document.insert.aname

function validateForm() {
    //Get the trimmed name
    var animalName = trim(nameInput.value)

    if(animalName) {
        //Update the form with the trimmed value, just before the form is sent
        nameInput.value = animalName
    }
    else {
         //Trimmed value is empty
         alert("Animal should have a name");
         nameInput.focus();
         return false;
    }
}

function trim(value) {
    return value.replace(/^\s+|\s+$/g,"");
}

答案 1 :(得分:5)

首先,我将提供一些未经请求的建议:)即使您的javascript代码修剪了用户的输入,也无法保证此代码始终会运行。例如,用户可能会在其浏览器上禁用javascript或仅使用库(其中大量存在)以编程方式提交表单数据,而无需使用任何浏览器。

因此,您应该始终修改服务器端的输入(在您的情况下,在JSP中)。在生产系统中,您需要做的不仅仅是修剪,还需要检查最大尺寸和数据类型(因此,如果您的JSP需要数字输入,则需要检查)

这意味着您基本上必须进行两次数据验证。您在浏览器中执行的数据验证可以帮助用户,并且在输入无效内容时应显示用户友好的消息。重要的概念是浏览器验证不提供安全性,因为它没有提供任何安全性。安全性来自服务器端验证。服务器端验证提供用户友好的反馈并不是那么重要;它确实很好,但它不是最重要的。

现在,问你的问题。当你打电话给

trim(document.insert.aname.value)

这不会改变表单中的值。它只是返回一个剪裁版本的表单数据。因此,当您提交表单时,“test”末尾的空格会与表单数据一起出现。

javascript可以操作表单中的内容,但这种做法并不常见,不可取。所以,总结一下:

  1. 您的代码不会删除用户提交的数据的尾随空格
  2. 您可以更改代码来执行此操作,但这不是一个好主意,因为无论如何都必须在服务器上执行修剪
  3. 因此,您需要在服务器上修剪它
  4. 希望这会有所帮助。 菲尔

答案 2 :(得分:1)

嘿,您可以使用jQuery.trim功能:

var str = " a  ";
str = $.trim(str)