JavaScript/jQuery根据一个公共属性选择多个项目,并将它们作为用分隔符分隔的字符串传递给JavaBean
JavaScript/jQuery Select multiple items according to a common attribute and pass them as a String separated by a delimiter to the JavaBean
我遇到了这个问题,因为我对JavaScript和jQuery的了解有限。我使用的是JSF 2.0和PrimeFaces 3.5。我在PrimeFaces中有一个有序的项目列表,我想获得选定的项目,以便在单击删除按钮时删除它们。当列表中的某个项目被选中时,其状态将变为"ui状态高亮显示"。当浏览器处于调试模式并且选择了列表中的项目时,可以看到这一点。按住Ctrl键可以选择多个项目。然而,按照目前的实现方式,只有一个项目的索引被发送到后端的JavaBean,因此即使选择了多个项目,也只有一个从列表中删除。
如何将JavaScript部分更改为以字符串的形式发送给后端的我的JavaBean,或者用分隔符(如",")分隔的所有选定项,或者再次用分隔符分隔的选定项的所有索引?
JavaScript部分:
<script type="text/javascript">
$(document).ready(function() {
$(document).on('click', '.delete_answer_button', function() {
var selectedItem = $(this).closest('.orderlist_wrapper').find('.ui-orderlist-item.ui-state-highlight');
if (selectedItem.length > 0) {
deleteAnswer1([
{name: 'index', value: selectedItem.closest('ul').find('li').index(selectedItem)}
]);
}
});
});
</script>
JSF/PrimeFaces部分:
<h:form id="form">
<h:panelGroup layout="block" styleClass="form_field_wrapper orderlist_wrapper">
<p:orderList id="a123" value="#{testBean.newQuestion.answers}" var="answerswer" itemValue="#{answer}" converter="testConvert" controlsLocation="left">
<f:facet name="caption">Answers</f:facet>
<p:column>
#{answer.text}
</p:column>
</p:orderList>
<h:panelGroup layout="block" styleClass="form_field" style="width: 40px;">
<p:commandButton value="" icon="ui-icon-minusthick" type="button" styleClass="icon_button delete_answer_button" />
<p:remoteCommand name="deleteAnswer1" actionListener="#{testBean.deleteAnswer}" update=":form:result :form:a123" />
</h:panelGroup>
</h:panelGroup>
<h:outputText id="result" value="#{testBean.result}"/>
</h:form>
JavaBean中的deleteAnswer方法:
public void deleteAnswer(ActionEvent event) {
int index = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("index"));
List<Answer> temp = getNewQuestion().getAnswers();
Answer temp2 = temp.get(index);
result = "deleted " + getNewQuestion().getAnswers().get(index).toString();
getNewQuestion().getAnswers().remove(index);
}
$(document).ready(function() {
$(document).on('click', '.delete_answer_button', function() {
$(this).closest('.orderlist_wrapper').find('.ui-orderlist-item.ui-state-highlight').each(function() {
deleteAnswer1([
{name: 'index', value: $(this).closest('ul').find('li').index($(this))}
]);
});
});
});
您希望使用"each"迭代器循环遍历您的项目,然后为每个项目调用delete answer功能。否则,您可以在构建数组(或您需要的任何容器)时循环遍历它们,然后在循环之后,只调用deleteAnswer函数一次并将其传递给数组。
我不确定deleteanswer语法,但您可以在每个循环中放入一些警报,以确定您需要什么。
我发现了如何根据Stan的循环将索引附加到String。谢谢你帮助斯坦。
$(document).ready(function() {
$(document).on('click', '.delete_answer_button', function() {
var indexString='';
$(this).closest('.orderlist_wrapper').find('.ui-orderlist-item.ui-state-highlight').each(function() {
indexString+= $(this).closest('ul').find('li').index($(this)) + ',';
});
deleteAnswer1([
{name: 'index', value: indexString}
]);
});
相关文章:
- javascript函数内部的代码用逗号而不是分号分隔
- 可以't用回车符分隔那个字符串
- 计算输入中有多少逗号分隔的字符串
- Javascript和RegEx:拆分并保留分隔符
- 选择带有空格分隔单词的元素
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 使用JavaScript分析分隔文本行
- 不使用分隔符分解字符串
- 设置自动分隔符的自定义属性
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- JS将分隔符分隔的字符串转换为数组元素
- JavaScript/jQuery根据一个公共属性选择多个项目,并将它们作为用分隔符分隔的字符串传递给JavaBean
- javascript多分隔拆分&将使用过的分隔符返回到数组
- 如何对由分隔的数字使用jquery函数.(点)或,(逗号)作为千分隔符
- 如何在此分隔符中按行分隔文本
- 用于分隔值列表的正则表达式,其中的值可能包含分隔符
- 用多个分隔符分隔字符串,保留它们并在双引号中忽略它们
- 如何用千位分隔符解析两个空格分隔的数字
- 如何使用regex和javascript替换分隔字符串的每个字段分隔符(例如,逗号到分号)
- 用分隔符分隔字符串,但将分隔符包含在返回数组中