2013-09-11 9 views
0

Я хочу только указать поле, если пользователь не установил флажок в другом месте формы.xpages проверяет одно поле, если установлен флажок

Значение флажка «Да», если отмечено, или «Нет», если не отмечено.

В формуле проверки в окне редактирования, я есть вычисленная SSJS:

getComponentValue ("SoleSource") == "Нет"

функция сохраняется в качестве источника JS

function getComponentValue(id){ 
    var field = getComponent(id); 
    var value = field.getSubmittedValue(); 
    if(null == value){ 
     // else not yet submitted 
     value = field.getValue(); 
    } 

    return value; 
} 

Независимо от того, установлен флажок (с идентификатором «SoleSource»), он всегда возвращает значение «Нет», которое является значением по умолчанию, и пытается проверить мое поле.

Есть ли способ сделать это, не отправив форму?

ответ

0

Вы можете получить доступ к значению поля только при отправке значения на сервер. Я бы предложил двойной подход. Один: используйте JavaScript на стороне клиента, чтобы проверить (для удобства пользователя) и серверную сторону при полной отправке (для обеспечения целостности данных).

0

Как уже говорилось, в stwissel есть два способа проверить свой входной интерфейс, клиентский интерфейс и серверный сервер. Чтобы манипулировать валидацией в зависимости от пользователя, я бы использовал код JavaScript для ClientSide, чтобы сделать его более «на лету», а затем снова проверить весь документ на «Отправить снова» на стороне сервера.

Вот краткий пример того, как я построил бы это на ClientSide с додзё. Но, пожалуйста, не забудьте снова проверить данные на сервере, когда пользователь сохраняет/отправляет его, чтобы избежать поврежденных данных из-за манипуляции с вашим JavaScript-клиентом ClientSide (или кто-то просто превращает javascript в свой браузер).

<xe:djCheckBox id="select" value="#{viewScope.check}" 
    checkedValue="yes" uncheckedValue="no"> 
    <xp:this.dojoAttributes> 
     <xp:dojoAttribute name="onChange"> 
      <xp:this.value><![CDATA[#{javascript:return "var input = dijit.byId('"+getClientId('required')+ "'); input.required = !input.required;"}]]></xp:this.value> 
     </xp:dojoAttribute> 
    </xp:this.dojoAttributes> 
</xe:djCheckBox> 

<xp:inputText id="required" dojoType="dijit.form.ValidationTextBox"> 
    <xp:this.dojoAttributes> 
     <xp:dojoAttribute name="required" 
      value="true"> 
     </xp:dojoAttribute> 
    </xp:this.dojoAttributes> 
</xp:inputText> 

В этом примере я использую додзё, чтобы преобразовать свою InputField в dijit.form.ValidationTextBox Wich сеточки меня изменить это required СВОЙСТВ. DojoValidation.

Смежные вопросы