У меня есть редактируемый dataTable (режим редактирования строк). Когда я редактирую строку и щелкаю галочкой, чтобы подтвердить новое значение, я хотел бы проверить некоторые столбцы (некоторые из них требуются) с помощью jqxvalidator. Таким образом, при нажатии галочки функция validateRule(#{rowIndex});
должна проверять строку, которая была только что отредактирована, но значение rowIndex
, переданное этой функции, равно undefined
.get rowIndex в rowEdit ajax event
Есть ли другой способ получить индекс строки и передать его функции JavaScript?
Некоторые из моих Xhtml код:
<p:dataTable id="tblRule" var="item" value="#{bean.ruleList}" binding="#{bean.dtRules}" editable="true"
editMode="row" rowIndexVar="rowIndex" widgetVar="tblRuleWidget">
<p:ajax event="rowEdit" listener="#{bean.doEdit}" update="tblRule" onstart="validateRule(#{rowIndex}); " />
<p:ajax event="rowEditCancel" onstart="hideValidatorMsg();" />
<p:column>
<p:rowEditor />
</p:column>
<p:column id="colRuleId" headerText="Id" >
<h:outputText value="#{item.id}" />
</p:column>
<p:column id="colRuleCode" headerText="Code">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{item.code}" />
</f:facet>
<f:facet name="input">
<p:inputText id="inRuleCode" value="#{item.code}" onblur="hideValidatorMsg(); validateRule(#{rowIndex});" />
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
JavaScript:
function validateRule(rowIdx) {
var namespace = 'view' + $('[id$=hidNamespace]').val();
$('#' + namespace + '\\:form1').jqxValidator({
animation : 'none',
scroll : false,
arrow : false,
rules : [ {
input : '#' + namespace + '\\:form1\\:tabView\\:tblRule\\:' + rowIdx + '\\:inRuleCode',
message : 'Required field!',
action : 'blur',
position : 'top',
rule : 'required'
} ]
});
if ($('#' + namespace + '\\:form1').jqxValidator('validateInput', '#' + namespace + '\\:form1\\:tabView\\:tblRule\\:' + rowIdx + '\\:inRuleCode') === false) {
return false;
} else {
return true;
}
}
То, что мне нужно! Большое спасибо! – peterremec
Добро пожаловать. –
Я использовал 'event' в' onstart', но после того, как я обновился до PrimeFaces 5.3, 'event' не определено. Есть идеи? –