js值改变事件是指当js中的值发生改变时,会触发一个事件,这个事件就是js值改变事件。
js值改变事件的作用是当js中的值发生改变时,能够让程序自动执行一些代码,实现对页面的动态修改。例如:当用户在表单中输入内容时,就会触发一个js值改变事件,然后程序就会根据用户输入的内容来动态修改页面上的内容。
// 例子1 $('#input').on('change', function(){ // 监听input元素的change事件 var value = $(this).val(); // 获得input元素的value值 $('#result').html(value); // 将value值显示到result元素上 });
// 例子2 $('#select').on('change', function(){ // 监听select元素的change事件 var value = $(this).val(); // 获得select元素选中option的value值 if(value == '1'){ // 判断value是否为1,如果是则执行下面代码 $('#result').html('你选中了1'); }else if(value == '2'){ // 判断value是否为2,如果是则执行下面代码 $('#result').html('你选中了2'); }else{ // 否则执行下面代码 $('#result').html(''); } });
我们可以处理h:inputText或h:selectOneMenu的值更改事件。
要注册事件处理程序侦听器,请传递UI组件的valueChangeListener属性中的托管bean方法的名称。
或者实现ValueChangeListener接口,并将实现类名称传递给UI Component的valueChangeListener属性。
以下代码显示如何将方法从Managed Bean注册到valueChangeListener方法
public void localeChanged(ValueChangeEvent e){ //assign new value to country selectedCountry = e.getNewValue().toString(); }
注册方法
<h:selectOneMenu value="#{userData.selectedCountry}" onchange="submit()" valueChangeListener="#{userData.localeChanged}" > <f:selectItems value="#{userData.countries}" /> </h:selectOneMenu>
以下代码显示了如何实现ValueChangeListener。
public class LocaleChangeListener implements ValueChangeListener { @Override public void processValueChange(ValueChangeEvent event) throws AbortProcessingException { //access country bean directly UserData userData = (UserData) FacesContext.getCurrentInstance(). getExternalContext().getSessionMap().get("userData"); userData.setSelectedCountry(event.getNewValue().toString()); } }
并注册到f:valueChangeListener标签。
<h:selectOneMenu value="#{userData.selectedCountry}" onchange="submit()"> <f:valueChangeListener type="com.tutorialspoint.test.LocaleChangeListener" /> <f:selectItems value="#{userData.countries}" /> </h:selectOneMenu>
以下代码来自demo.xhtml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:body> <h:form> Selected country locale : <h:inputText id="country" value="#{country.localeCode}" size="20" /> Select a country {method binding}: <h:selectOneMenu value="#{country.localeCode}" onchange="submit()" valueChangeListener="#{country.countryLocaleCodeChanged}"> <f:selectItems value="#{country.countryInMap}" /> </h:selectOneMenu> Select a country: <h:selectOneMenu value="#{country.localeCode}" onchange="submit()"> <f:valueChangeListener type="cn..common.MyValueChangedListener" /> <f:selectItems value="#{country.countryInMap}" /> </h:selectOneMenu> </h:form> </h:body> </html>
以下代码来自MyValueChangedListener.java。
package cn..common; import javax.faces.context.FacesContext; import javax.faces.event.AbortProcessingException; import javax.faces.event.ValueChangeEvent; import javax.faces.event.ValueChangeListener; public class MyValueChangedListener implements ValueChangeListener{ @Override public void processValueChange(ValueChangeEvent event) throws AbortProcessingException { UserBean country = (UserBean) FacesContext.getCurrentInstance(). getExternalContext().getSessionMap().get("country"); country.setLocaleCode(event.getNewValue().toString()); } }
下面的代码来自UserBean.java。
package cn..common; import java.io.Serializable; import java.util.LinkedHashMap; import java.util.Map; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.event.ValueChangeEvent; @ManagedBean(name="country") @SessionScoped public class UserBean implements Serializable{ private static final long serialVersionUID = 1L; private static Map<String,String> countries; private String localeCode = "en"; //default value static{ countries = new LinkedHashMap<String,String>(); countries.put("United Kingdom", "en"); //label, value countries.put("French", "fr"); countries.put("German", "de"); } public void countryLocaleCodeChanged(ValueChangeEvent e){ localeCode = e.getNewValue().toString(); } public Map<String,String> getCountryInMap() { return this.countries; } public String getLocaleCode() { return localeCode; } public void setLocaleCode(String localeCode) { this.localeCode = localeCode; } }下载 Value_Changed_Event.zip
将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。
Tomcat完成启动后,在浏览器地址栏中键入以下URL。
http://localhost:8080/simple-webapp/demo.xhtml
JSF教程 -JSF链接示例h:Link标签渲染一个HTML“anchor"元素。以下JSF标记h:link value="Page 1" outcome="page1" /被渲染为以下H...
JPA教程 -JPA查询本地查询结果类示例以下代码显示如何创建本机命名查询。@Entity@Table(name = "EMP")@NamedNativeQuery(name = ...
JPA教程 -JPA查询IN示例IN表达式可以检查单值路径表达式是否是集合的成员。集合可以内联定义为一组字面值,或者可以从子查询派生...
Java设计模式 - 抽象工厂模式抽象工厂模式是另一个创建模式。抽象工厂模式,也称为工厂的工厂,有一个工厂创建其他工厂。当使用...
Java设计模式 -责任链模式责任链模式为请求创建一个接收者对象列表。这种模式是行为模式。当使用责任链模式时,通常每个接收器包...