2012-09-01 36 views
1

上的文字在语言如Java或GUI框架,比如Qt的为C++,就可以得到一个处理文本的某些块(例如标签控件)用户不能改变,但程序可以根据某些条件得到满足而修改。我希望能够在HTML网页上从一些JavaScript代码中做同样的事情。更改某些(不是全部)显示当前网页

例如,考虑用于输入用户凭证的网页。如果凭证无效,我想在当前网页上显示一条消息,而不必加载全新的页面。

我已经得到它使用HTML文本框或文本区域,设置为禁用工作,具有一定的显示风格变化(通过CSS)只读。更改会导致一些JavScript代码运行,这可能会导致这些文本框或textareas的值字段发生更改。虽然这可以工作,但它似乎并不正确。有没有更正统的方式来完成这一点?

回答

1

当然。有几个库可以处理这个问题。

您可能会要求进行表单验证。如果是这样,尝试jQuery和jQuery的验证扩展库:demo

或者你要的可能是一个更通用的使用观察者模式。如果是这样,请尝试为JavaScript等众多MVVM/MVC库(例如backbone.js或knockout.js(也包括烬,敏捷,角度和脊柱))之一:jsfiddle

编辑:另请注意,如果您的需要只是标准表单验证,您可以在jQuery验证中完成它,而无需任何代码说明 - 只需在HTML元素上直接添加属性,即可指示验证规则的内容。不幸的是,HTML5数据属性在写入时并未出现,因此您将验证规则应用为CSS类。

编辑2:也注意到,jQuery验证出的现成支持远程验证,如证书或用户名,已经存在的场景:demodocumentation

+0

验证扩展和演示中描述的一般方法似乎符合法案。谢谢。 – andand

+0

不客气!我在功能上做了一个有根据的猜测,你在哪里以你的问题为题。我以前一直在那里:) – shannon

+0

我还应该提到,通常是在服务器上处理客户端处理的所有验证的一种良好实践。因此,如果您通过JavaScript在浏览器上显示错误的红色错误文本以获取不匹配的密码,则在服务器收到不匹配的密码时,通过服务器代码生成相同的红色错误文本。我知道这很烦人,但一些服务器技术有一些方法可以使它成为可能,所以你只需要编写一次验证规则,并且它在两个地方都可以工作。现在防止恶意请求比处理sans-javascript浏览器更重要。 – shannon

0

你应该尝试jQuery的.change();

假设你的HTML输入有一个ID:

<input type='text' id='idOfTheField' name='email'> 

你应该尝试:

$('#idOfTheField').change(function(){ 

    //Do stuff with the value. 
    //Wich is $('#idOfTheField').value() by the way. 

}); 

要使用Web服务器处理数据,您需要执行以下AJAX调用:

$.ajax({ 
    url: "parse.php", 
    data: { 
     email:$('#idOfTheField').value() 
    } 
}).done(function() { 
    // Add the CSS class ".valid" that makes the text field green, for example. 
    $('#idOfTheField').addClass("valid"); 
}); 
+0

我想我在寻找一个合适的HTML标记,我可以用它来识别我希望能够改变文字更好地理解推荐。它看起来像你建议假设我已经有文字标记。我错过了什么吗? – andand

+0

是的,你应该在html上有一个'id'字段。像这样: jturolla

+0

所以,我一直在使用