2015-09-07 31 views
0

編輯:如何使錯誤訊息消失時複選框被選中

<div class="editor-item"> 
<label for="Location">Location</label><input class="input-validation-error ui-autocomplete-input" data-jqui-acomp-delay="400" data-jqui-acomp-hiddenvalue="LocationId" data-jqui-acomp-minlength="3" data-jqui-acomp-source="/Loc/Search" data-jqui-type="autocomplete" id="Location" name="Location" type="text" value="123 wrong address" autocomplete="off"> 
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span><span class="field-validation-error" data-valmsg-for="Location" data-valmsg-replace="true">Location not found</span></div> 

當用戶提交我檢查,看看如果該位置存在,如果沒有的話我的ModelState我添加的按鈕。 AddmodelError

ModelState.AddModelError((LocationViewModel m) => m.Location, "Location not found");

我的問題是:當複選框Create Location用戶點擊我怎樣才能讓錯誤消失?

<span id="CreateNLocation" > 
    @Html.LabelFor(model => model.CreateLocation, "Create Location") 
    @Html.CheckBoxFor(model => model.CreateLocation) 
</span> 

渲染在運行時:

<span id="CreateNLocation" style=""> 
    <label for="CreateLocation">Create Location</label> 
    <input data-val="true" data-val-required="The Create new Location field is required." id="CreateLocation" name="CreateLocation" type="checkbox" value="true"> 

enter image description here

+0

顯示模型屬性和它的屬性,以及如何生成HTML(我假設你使用HTML傭工)。處理這個問題的最簡單方法是使用[[簡單]] [[RequiredIfTrue]]或類似的驗證屬性,這樣您就可以同時獲得客戶端和服務器端驗證(no需要添加一個'ModelState'錯誤 –

+0

你只是想擺脫與錯誤消息的span標籤或尋找適當的驗證? –

+0

試圖擺脫span標籤 –

回答

2

根據您的意見,您的問題

$('#CreateLocation').change(function(){ 
    if($(this).prop("checked")) { 
    $("span[data-valmsg-for='Location']").hide(); 
    } else { 
    $("span[data-valmsg-for='Location']").show(); 
    } 
}); 

a fiddle

+0

是的,它工作!如果用戶取消選中該複選框會怎麼樣,我該如何回覆錯誤信息?沒有再次發佈整個頁面 –

+0

而不是將其從DOM中刪除您可能想要隱藏並顯示 –

+0

1+是的,它的工作 –

0
$('#CreateLocation').click(function() { 
    $('.field-validation-error).remove(); 
}); 

如果我正確理解你的問題,你只想讓錯誤消失檢查時複選框?如果是的話,這應該適合你。

編輯:誤讀問題,我需要標記錯誤消息(div,span,不管它是什麼)。無論元素是什麼,用正確的替換.remove()選擇器。

$('#CreateLocation').click(function() { 
    $(this).parent(wrapper).find('.field-validation-error').remove(); 
}); 
+0

'找不到位置' –

+0

我將選擇器更新爲cod即希望這是對你的工作答案,可能有更好的ASP相關解決方案,但是(我是一個JS/PHP的傢伙)。 – KrakenDev

+0

使用類名稱的問題是,我有更多的具有相同的類名'字段驗證錯誤',我沒有看到它有'ID或名稱' –

1

下面是一個JS小提琴例如,如果你想顯示/隱藏它的基礎上,如果該複選框已被選中或不。

$('#CreateLocation').click(function() { 
    var $checkbox = $('#CreateLocation'); 
    var $errMsg = $(this).parents('#parent-example') 
         .find('.field-validation-error'); 
    $checkbox.prop('checked') ? $errMsg.hide() : $errMsg.show(); 
}); 

http://jsfiddle.net/ga7kpn3r/1/

+0

將代碼放在包裝div中可以確保只刪除特定的錯誤元素而不是所有匹配的元素數據選擇器或類選擇器。只需將我的jS小提琴代碼替換爲您需要的類/標記,但該功能在切換複選框時起作用。 – KrakenDev

相關問題