по нажатию кнопки, цикл через текстовые поля JavaScript

0

Я пытаюсь сделать функцию нажатой кнопкой. При щелчке функция проходит через каждый элемент input type = text, присваивает свой атрибут value переменной, если этот метод = null или variable = "" метод вызова подтверждают ("вы уверены, что хотите сохранить пустую строку"). Здесь мой код/​​псевдо-код:

<script type="text/javascript">
    function isInputEmpty() {
        $("#btnSave").click(function(){
            $('input[type=text]').each(function(){
                var x = $(this).attr('value');
                var bool = false;
                if(x == null || x == "")
                {
                    bool = true;
                }
                else
                {
                    send the request
                }
                if(bool == true)
                {
                    if(confirm('Are you sure you want to save a blank URL?'))
                    {
                        send the request
                    }
                    else
                    {
                        do nothing or cancel the request
                    }
                }
                else
                {
                    send the request
                }
             }
        }
</script>

Вот мой код кнопки asp:

<asp:Button ID="btnSave" runat="server" Text="Save"/>

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. заранее спасибо

4 ответа

1
Лучший ответ

Для проблемы с идентификатором, если вы используете ASP.Net 4.0 +, установите ClientIDMode=Static

 <asp:Button ID="btnSave" runat="server" ClientIDMode="Static" Text="Save"/>

JS

<script type="text/javascript">
 function isInputEmpty() {
    $("#btnSave").click(function(){
        $('input[type=text]').each(function(){
            var x = this.value;

            var bool = false;
            if(x === null || x === "")
            {
                bool = true;
            }
            else
            {
                send the request
            }
            if(bool === true)
            {
                if(confirm('Are you sure you want to save a blank URL?'))
                {
                    LoadData();
                }
                else
                {
                    return;//do nothing
                }
            }
            else
            {
                send the request
            }
         }
    }


function LoadData()
{
$.ajax({
    type: "GET",
    url: 'page.aspx',       
    timeout: 1000,        
    success:function(data){    
     //do work
    },
    error:function(jqxhr, status){
     if(status==="error"){
     //handle error
     }    
 });
}
</script>
  • 0
    Это был очень полезный ответ. Я отмечу вашу запись как ответ, если вы также можете помочь мне с кодом, который мне нужно добавить вместо псевдокода «отправить запрос» и «ничего не делать или отменить запрос»
  • 0
    @ user2855535, так как вы просили добавить LoadData для загрузки данных. проверить это не
1

Поскольку это ASP.NET, этот идентификатор будет отображаться другим, попробуйте захватить идентификатор клиента (если JS находится в одном файле, а если нет, используйте уникальный класс и назначьте обработчик через это)

$("#<%=btnSave.ClientID%>").click(function() {
    $("input:text").each(function() {
        if (!this.value.length) {
            var confirm = confirm('are you sure you want to save a blank row')
            ..
        }
    });
});
  • 0
    спасибо за использование this.value . $(this).val() достаточно плох, не говоря уже о $(this).attr('value') который он использовал.
  • 0
    @PlantTheIdea - Не нужно радовать JQuery :)
0

Вы также можете сделать, как показано ниже.

<script type="text/javascript">
            function isInputEmpty() {
                var bool = false;
                $("#btnSave").click(function () {
                    $('input[type=text]').each(function () {
                        var x = $(this).attr('value');
                        if (x == null || x == "") {
                            bool = true;
                        }
                    });

                    if (bool == true) {
                        if (confirm('Are you sure you want to save a blank URL?')) {
                            //send the request
                        }
                        else {
                            //do nothing or cancel the request
                        }
                    }
                    else {
                        //send the request
                    }
                });
            }
        </script>
  • 0
    Спасибо за очистку моего кода. Мой вопрос не был сформулирован явно. Я хотел знать, где должен быть изменен мой javascript, но также и то, какую логику мне нужно добавить вместо // отправки запроса // без комментариев. Полный код не требуется, хотя приветствуется.
0

Не совсем понятно, каков ваш вопрос, но другие ответы здесь по праву сосредоточены на проблеме ID и.NET-сетях, изменяющих идентификатор элемента.

Другие предлагаемые решения хороши, но есть и другой способ, и это поиск по частичному идентификатору. Если для параметра clientIDmode не установлено значение static (или если вы pre.Net 4.0), то идентификатор.NET всегда будет содержать исходный идентификатор после подчеркивания, поэтому вы можете найти свой элемент с помощью jquery следующим образом:

$("[id$='_btnSave']").click(function(){   ...  
  • 0
    Вы правы, мой вопрос не был четко сформулирован. Я хотел, чтобы мой код подвергся критике с указанием очевидных синтаксических / логических ошибок. И какую логику мне нужно добавить вместо псевдо «отправить запрос / ничего не делать». Полные примеры кода не нужны, хотя и высоко ценятся.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню