условная проверка для одного текстового поля - PullRequest
1 голос
/ 07 мая 2011

У меня есть форма MVC3 / Razor с выпадающим списком и одним текстовым полем.В раскрывающемся меню есть 2 варианта выбора OrderID или ClerkName.

Если пользователь выбирает OrderID, то я хочу принять только цифры [0-9] в текстовое поле, а если пользователь выберет ClerkName, то я хочу принять только символы [az, AZ] в текстовое поле.

Я хочу здесь jQuery validaton..Пожалуйста, помогите мне в этом направлении.

Здесь мы должны проверить проверку в обоих случаях, 1. при загрузке формы и 2... об изменении выбора DDL ..... помогите.

  @{
    ViewBag.Title = "Index";
}
@using (Html.BeginForm())
{
    <div id="mainP">
        <div>
            @Html.DropDownList("SearchBy", new[] {  new SelectListItem { Text = "Order ID", Value = "OrdId" },
                                                    new SelectListItem { Text = "Clerk Name", Value = "ClerkName" } })
            <br />
            @Html.TextBox("SearchedText", ViewData["SEARCHED_TEXT"] == null ? "" : ViewData["SEARCHED_TEXT"], new { @class = "search_text_area" })
            <br />
        </div>
        <input type="button" id="btnSubmit" value="Submit" />
    </div>

}
<script type="text/javascript">

    $(function () {



    });

</script>

Ответы [ 2 ]

0 голосов
/ 07 мая 2011

Вам нужно создать собственное правило проверки:

jQuery.validator.addMethod("numbersXorLetters", function(value, element) {
    var isValid = false;
    if($("#SearchBy").val() == "OrdId")
        isValid = /^[0-9]*$/.test(value);
    if($("#SearchBy").val() == "ClerkId")
        isValid = /^[a-zA-Z]*$/.test(value);
    return this.optional(element) || isValid;
}, "Invalid value");

И затем применить это так:

$("#SearchBy").rules("add", {
  numbersXorLetters: true
});

Надеюсь, это поможет. Приветствия

0 голосов
/ 07 мая 2011

Я предполагаю, что вы действительно хотите: очистить ввод при изменении выбора (так как по вашим правилам проверки он больше не действителен) и подтвердить при отправке, а не при загрузке формы.

$(function(){
  // Get a reference to the controls we'll re-use throughout the program
  var searchedText = $("#SearchedText");
  var searchBy = $("#SearchBy");

  // Determine the validation regular expression
  function GetValidationRegex(){
    if (searchBy.val() == "OrdId")
      return /^[0-9]+$/;
    else
      return /^[a-zA-Z ]+$/;
  }

  // Define our on change handler
  function SearchByChangeHandler(){
    // Clear the input
    searchedText.val("");
  }

  // Bind the handler
  $("#SearchBy").change(SearchByChangeHandler);

  // Bind to the form submit to validate
  $("form").submit(function(){
    // Get the text
    var value = searchedText.val()
    // If no text, error case 1
    if (!value){
      alert("A value is required...");
      return false;
    } 
    // If doesn't match the validation expression for the current selection
    // this is your error case
    else if (value.match(GetValidationRegex()) == null){
      alert("Regex doesn't match...");
      return false;
    }

  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...