2011-11-14 67 views
3

你好,我试图修剪空格,当用户输入空格时,他得到一个错误解释说,他应该输入有效的字符,但如果他使用:' 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

+0

这不是Java。 –

+0

我知道,但这将由servlet处理我在哪里把验证内部的Java或JSP? – user1031152

+0

@ user1031152:java _is_是JSP。另一位是javascript – Eric

回答

7

你实际上并没有修剪输入。你想这样的:

//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

请记住,这个问题被标记为家庭作业。在这种情况下,我宁愿给出提示而非答案。 – Smamatti

+0

非常感谢它现在的工作 – user1031152

+0

@ user1031152:请注意,这_doesn't_阻止我添加任意空格填充的字符串到您的数据库。如果我禁用JavaScript,则此代码将不会运行,并且会让我提交未修剪/空字符串。在JSP中进行验证。 – Eric

1

嘿,你可以使用这个功能jQuery.trim

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

我认为作业的重点不在于使用框架:) – Smamatti

+3

* Yay *,让我们包含一个可以在1行内完成的31kb库! – Matt

+1

以及Smamatti说我不能使用任何框架:(但感谢 – user1031152

4

首先,我将提供一些非请求的建议:)即使你的JavaScript代码从修剪输入用户,您不能保证此代码将始终运行。例如,用户可能会在其浏览器上禁用JavaScript,或者只是使用库(大量存在)以编程方式提交表单数据而不使用任何浏览器。

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

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

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

trim(document.insert.aname.value) 

这不会改变窗体中的值。它只是给出了表单数据的修剪版本。所以当你提交表单时,'test'结尾处的空格和表单数据一起出现。

JavaScript有可能操纵表单中的内容,但这不是常用的操作,也不可取。因此,要总结:

  1. 您的代码不删除尾随的空间供用户提交的数据
  2. 你可以改变你的代码要做到这一点,但它不会是因为你必须执行一个好主意服务器上的装饰,无论
  3. 因此,你需要修剪它在服务器上

希望这有助于。 菲尔

+0

的主意,首先非常感谢您的回复,其次它是一项家庭作业,我是新手,所以我不认为他们会麻烦您现在在客户端进行验证,但是您提供的信息非常好,我将为我的未来家庭作业保留这些信息 – user1031152

+0

非常欢迎您,只要记住要保持健康的偏执狂,建设生产系统点。干杯。 – PhilDin