2015-09-17 3 views
0

Я хочу проверить, используется ли введенное имя пользователя или доступно ли оно. Я использовал атрибут Remote от System.Web.Mvc, и он отлично работает. В основном я использовал этот link для справки.Пользовательская проверка на стороне клиента

Однако, интересно, может ли это же быть реализовано при нажатии кнопки на форме без отправки формы.

Я спрашиваю это потому, что я хочу, чтобы показать сообщение об ошибке, если имя уже используется, и я также хочу, чтобы показать еще одно сообщение, если оно доступно (как «Имя пользователя Доступен»).

Есть ли способ сделать это?

Я использую MVC 4 на Visual Studio 2012.

+0

мутноватый, что вы желающих. Использование атрибута '[Remote]' означает, что форма НЕ отправлена ​​(когда вы выходите из текстового поля, для вас используется метод ajax, который возвращает значение, указывающее, является ли оно действительным или нет). –

+0

Привет @StephenMuecke, я хочу в основном сделать то же самое. Но я хочу добавить две функциональности. 1. Я хочу показать сообщение на странице, если указанное значение действительно. 2. Я хочу изменить стиль отображаемого сообщения (например, цвет, размер шрифта и т. Д.) – GaidinD

+0

Почему вы хотите добавить сообщение «Имя пользователя»? (ужасный пользовательский интерфейс, и что заставляет вас думать, что ваши пользователи будут нажимать кнопку в любом случае). Если вы хотите это сделать, удалите атрибут '[Remote]' и обработайте кнопки '.click()' event и сделайте ajax-вызов методу контроллера (передав значение 'UserName') и верните сообщение который вы можете затем отобразить в DOM –

ответ

0

Хорошо, я решил, что решил. Огромное спасибо @yohanis за помощь в этом. Я обнаружил небольшие ошибки в коде, иначе он работал нормально.

$(document).ready(function() { 
 
    $("#btnCheckUserName").click(function() { 
 
    var userName = $('#txtUserName').val(); 
 
    $.ajax({ 
 
     url: 'home/IsUserNameInUse', 
 
     data: { 
 
     userName: userName 
 
     }, 
 
     dataType: "json", 
 
     success: function(data) { 
 
     if (data == undefined) { 
 
      //do something 
 
     } else { 
 
      //display your err message here 
 
     } 
 
     } 
 
    }); 
 
    }); 
 
});

0

Вам нужно сделать Ajax вызов на действия контроллера по нажатию кнопки (Jquery) и проверьте свой ответ на успех и отображать сообщение об ошибке.

$("#btnCheckUserName").click(function() { 
var userName = $('#txtUserName').text; 
$.ajax({ 
    url: 'home/IsUserNameInUse', 
    data: { userName: userName }, 
    success: function (data) { 
     if (data.exists === true) { 
      //display your err message here 
     } 
     else { 
      //do something 
     } 
    } 
}); 

});

Конечно, вам нужно определить действие контроллера, называемое IsUserNameinUse, которое принимает строковое значение userName. Сообщите мне, если вам сложно определить действие.

+0

Прошу прощения. Я пробовал это (меняя название материала, конечно), но он не работает. Это даже не посылает ничего контроллеру. – GaidinD

+0

Рад, что я могу помочь вам с этим. Я видел выше, что вы можете использовать предоставленное мной решение. – Yoky