我有一个JSP页面,因为我使用Struts2标签来制作我的注册表单。
现在第一个字段是使用s:select
标记的类型。现在,根据用户选择的内容,我想在选择框下方的同一页面上加载下一个texfields。我该怎么做?这是我的方法,但它不起作用。
<s:form action="clientAction" method="post">
<s:select name="type" label="Registration Type"
list="{'Student','Faculty'}" emptyOption="false" />
<s:if test="type.equals(Student)">
<s:textfield label="FirstName" name="s_fname"/>
<s:textfield label="LastName" name="s_lname"/>
<s:textfield label="UserName" name="s_username"/>
<s:password label="Password" name="s_password"/>
<s:textfield label="EmailId" name="s_email_id"/>
</s:if>
<s:if test="type.equals(Faculty)">
<s:textfield label="FirstName" name="fac_fname"/>
<s:textfield label="LastName" name="fac_lname"/>
<s:textfield label="UserName" name="fac_username"/>
<s:password label="Password" name="fac_password"/>
<s:textfield label="EmailId" name="fac_email"/>
<s:textfield label="Course Name" name="course_name"/>
<s:textfield label="Course Id" name="course_id"/>
</s:if>
<s:submit/>
</s:form>
答案 0 :(得分:1)
您可以使用JQuery执行此操作,并且您不需要从服务器加载字段,也不需要使用JSP代码搞乱JavaScript代码。您应该使用css_xhtml
主题隐藏/显示选择框更改事件的字段。就像在这个例子中一样
<s:form action="clientAction" method="post" theme="css_xhtml">
<s:select id="RegistrationType" name="type" label="Registration Type"
list="{'Student', 'Faculty'}" emptyOption="false" />
<s:div id="Student" cssStyle="display: none;">
<s:textfield label="FirstName" name="s_fname"/>
<s:textfield label="LastName" name="s_lname"/>
<s:textfield label="UserName" name="s_username"/>
<s:password label="Password" name="s_password"/>
<s:textfield label="EmailId" name="s_email_id"/>
<s:submit/>
</s:div>
<s:div id="Faculty" cssStyle="display: none;" >
<s:textfield label="FirstName" name="fac_fname"/>
<s:textfield label="LastName" name="fac_lname"/>
<s:textfield label="UserName" name="fac_username"/>
<s:password label="Password" name="fac_password"/>
<s:textfield label="EmailId" name="fac_email"/>
<s:textfield label="Course Name" name="course_name"/>
<s:textfield label="Course Id" name="course_id"/>
<s:submit/>
</s:div>
</s:form>
<script type="text/javascript">
$(document).ready(function(){
$('#RegistrationType').change(function(){
$('#'+this.value).css('display', 'block');
if (this.value=='Student') $('#Faculty').css('display', 'none');
else $('#Student').css('display', 'none');
});
});
</script>
答案 1 :(得分:0)
您可以在s:select标签上使用Javascript的onSelect
事件,根据“注册类型”的选择加载表单中的下一个字段。
<s:select onselect="loadForm();" name="type" label="Registration Type" list="{'Student','Faculty'}" emptyOption="false" />