从表单输入中修剪空格?

use*_*152 6 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,"");
}
Run Code Online (Sandbox Code Playgroud)

请帮忙吗?输入页面是.JSP

Eri*_*ric 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,"");
}
Run Code Online (Sandbox Code Playgroud)

  • @ user1031152:**这不是Java** (4认同)

Phi*_*Din 5

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

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

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

现在,问你的问题.当你打电话的时候

trim(document.insert.aname.value)
Run Code Online (Sandbox Code Playgroud)

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

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

  1. 您的代码不会删除用户提交的数据的尾随空格
  2. 您可以更改代码来执行此操作,但这不是一个好主意,因为您将不得不在服务器上执行修剪
  3. 因此,您需要在服务器上修剪它

希望这可以帮助.菲尔