2016-05-03 4 views
2

Я звоню эту функцию OnLoad на теле с помощью <body onload="dis()">Стоп Javascript обжиг при загрузке страницы

function dis(){ 
    if($('#stname').val() == ""){ 
     $('#update').hide(); 
     $('#newstore').show(); 
    } 
    else { 
     $('#update').show(); 
     $('#newstore').hide(); 
    } 
} 

В основном я хочу, чтобы проверить, если конкретный входной ящик пуст или не на нагрузке. Если он пуст, то должна появиться кнопка newstore. Если нет, он должен показать кнопку обновления. Но таким образом он работает так, как я хочу, когда загружается страница, но когда я ввожу что-то в stname, кнопки переключаются. Каков способ противостоять этому? Есть ли способ остановить запуск javascript при завершении загрузки страницы?

+0

попытка вызвать эту функцию внутри document.ready => $ (документ) .ready (функция() {дис(); // функция вызова здесь}); –

+0

, пожалуйста, поделитесь своим html-кодом также. вы вызывали эту функцию в любом событии текстового поля, например, клавиша вверх/вниз? –

+0

'' no keyup/downs @JitendraTiwari –

ответ

1

Выполните проверку, когда документ DOM готов, что это легко сделать, так как вы используете JQuery:

$(document).ready(function(){ 
    if($('#stname').val() == ""){ 
     $('#update').hide(); 
     $('#newstore').show(); 
    } 
    else { 
     $('#update').show(); 
     $('#newstore').hide(); 
    } 
}); 
+0

Как объект JQuery да: D Сначала пропустил знак '$': D –

+0

Это показывает обе кнопки на странице загрузки –

2

Что вам нужно сделать, это

$(window).on("load",function(){ 
    if($('#stname').val() == ""){ 
     $('#update').hide(); 
     $('#newstore').show(); 
    } 
    else { 
     $('#update').show(); 
     $('#newstore').hide(); 
    } 
}) 
+0

Это показывает обе кнопки на странице загрузки –

+0

Тогда вам нужно скрыть как первые ..добавить css 'display: none' –

+0

' ' –

0

Кроме того, чтобы установить видимость при загрузке страницы вы должны изменить его, когда содержимое поля изменилось. Вы можете использовать «изменить» событие на этом поле, как

var field = $("#stname"); 

field.on("change", function() { 
    $("#update").toggle(field.val() === ""); 
    $("#newstore").toggle(field.val() !== ""); 
}); 

тумблер() работает, как шкура() и шоу() вместе, принимая булево значение либо шоу (правда) или скрывать (ложь).

0

вы можете использовать DOM inteand нагрузки на корпус. Нельзя безопасно манипулировать страницей, пока документ не будет готов. jQuery определяет это состояние готовности для вас. Код, включенный внутри $ (document) .ready() будет запускаться только после того, как страница Document Object Model (DOM) готова для выполнения кода JavaScript. Код, включенный внутри $ (window) .load (function() {...}), будет запускаться после того, как будет готова вся страница (изображения или фреймы), а не только DOM.

$(document).ready(function() { 
    $('#update').show(); 
    $('#newstore').hide(); 

    // run this if field empty 
    if($('#stname').val() == ""){ 
     $('#update').hide(); 
     $('#newstore').show(); 
    } 

});

более https://learn.jquery.com/using-jquery-core/document-ready/

0

Чтобы предложить Вам альтернативное решение, которое вы, возможно, не считается: это может быть достигнуто в CSS, без JavaScript, используя adjacent sibling & attribute селекторов и negation pseudo-class, предполагая, что элемент акции input в же материнской как button элементов или их родительский элемент, например так:

#stname[value=""]~[#parent ]#update,#stname:not([value=""])~[#parent ]#newstore{ 
    display:none; 
} 
Смежные вопросы