簡體   English   中英

當2個選擇具有特定值時顯示div

[英]Show div when 2 selects have specific values

我有兩個下拉菜單:

<select name="name_1" id="name_1">
    <option value="Y" selected="selected">Option 1</option>
    <option value="N">Option 2</option>
</select>

<select name="name_2" id="name_2">
    <option value="Y" selected="selected">Option 1</option>
    <option value="N">Option 2</option>
</select>

如果我在第一個選擇'Y'選項,在第二個選擇'N'選項,我想顯示一條警告信息。 所以這是我的腳本:

var name_1;
var name_2;

$('#name_1').on('change'), function () {
    name_1 = this.val();
}
$('#name_2').on('change'), function () {
        name_2 = this.val();
}

$('#notification').hide();

if (name_1 == 'Y' && name_2 == 'N') {
    $('#notification').show();
} else {
    $('#notification').hide();
}

我有什么想法我做錯了嗎? 通知根本沒有顯示。

您可以為通知顯示創建一個單獨的函數,然后在change兩個select調用它:

$('#name_1, #name_2').on('change', display_notification);

使用單獨功能的代碼段:

 $('#notification').hide(); $('#name_1, #name_2').on('change', display_notification); function display_notification(){ if ($('#name_1').val() == 'Y' && $('#name_2').val() == 'N') { $('#notification').show(); } else { $('#notification').hide(); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="name_1" id="name_1"> <option value="Y" selected="selected">Option Y </option> <option value="N">Option N</option> </select> <select name="name_2" id="name_2"> <option value="Y" selected="selected">Option Y</option> <option value="N">Option N</option> </select> <br/><br/> <div id='notification'>NOTIFICATION</div> 

或者您可以直接在更改事件中添加流,而無需使用額外的功能:

直接使用更改事件的代碼段:

 $('#notification').hide(); $('#name_1, #name_2').on('change', function(){ if ($('#name_1').val() == 'Y' && $('#name_2').val() == 'N') { $('#notification').show(); } else { $('#notification').hide(); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="name_1" id="name_1"> <option value="Y" selected="selected">Option Y </option> <option value="N">Option N</option> </select> <select name="name_2" id="name_2"> <option value="Y" selected="selected">Option Y</option> <option value="N">Option N</option> </select> <br/><br/> <div id='notification'>NOTIFICATION</div> 

$('#name_1, #name_2').on('change', function () {
    if ($("#name_1").val() === "Y" && $("#name_2").val() === "N") {
      $("#notification").show();
    }else {
      $("#notification").hide();
    }
});

CodePen中的演示

是的,您正在檢查兩個選擇是否只有一次好的值(首次運行腳本時)。

這樣做:

var name_1;
var name_2;

$('#name_1').on('change'), function () {
    name_1 = $(this).val();
    toggleNotification();

}
$('#name_2').on('change'), function () {
        name_2 = $(this).val();
        toggleNotification();
}

$('#notification').hide();

function toggleNotification() {
  if (name_1 == 'Y' && name_2 == 'N') {
    $('#notification').show();
  } else {
    $('#notification').hide();
  }
}

任何一次選擇更改,它將檢查它是否應顯示或隱藏div。

var name_1;
var name_2;
$('#name_1').on('change'), function () {
    name_1 = this.val();
    UpdateNotification();
}
$('#name_2').on('change'), function () {
    name_2 = this.val();
    UpdateNotification();
}
$('#notification').hide();
function UpdateNotification() {
    if (name_1 == 'Y' && name_2 == 'N') {
        $('#notification').show();
    } else {
        $('#notification').hide();
    }
}

這是因為在首次加載頁面時,應該顯示通知的代碼只運行一次。

為了確保每次用戶更改其中一個下拉列表時都運行代碼,您可以創建一個單獨的函數來執行以下檢查:

 $('#name_1').on('change', checkValues); $('#name_2').on('change', checkValues); function checkValues() { if ($('#name_1').val() == 'Y' && $('#name_2').val() == 'N') { alert("You have been warned!"); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="name_1" id="name_1"> <option value="Y" selected="selected">Option 1</option> <option value="N">Option 2</option> </select> <select name="name_2" id="name_2"> <option value="Y" selected="selected">Option 1</option> <option value="N">Option 2</option> </select> 


您的原始代碼還存在其他問題,主要是這部分:

$('#name_1').on('change'), function () {
  name_1 = this.val();
}

如果你看一下jQuery.on文檔,你會發現調用它的正確方法是這樣的:

 $( "#dataTable tbody tr" ).on( "click", function() { console.log( $( this ).text() ); }); 

您可以看到該function必須位於 .on的括號內。

您的代碼幾乎沒有問題。

1:更改時的語法不正確

 $('#name_1').on('change'), function () {}

它應該是

$('#name_1').on('change', function () { });

2:您正在檢查頁面加載的值並為change事件分配值。

3:內部更改事件監聽器this.val應為$(this).val();

嘗試更改您的代碼,如下所示。

 var name_1 = $('#name_1').val(); var name_2 = $('#name_2').val(); $('#name_1').on('change', function() { name_1 = $(this).val(); check(); }); $('#name_2').on('change', function() { name_2 = $(this).val(); check(); }); $('#notification').hide(); function check() { if (name_1 == 'Y' && name_2 == 'N') { $('#notification').show(); } else { $('#notification').hide(); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="name_1" id="name_1"> <option value="Y" selected="selected">Option 1</option> <option value="N">Option 2</option> </select> <select name="name_2" id="name_2"> <option value="Y" selected="selected">Option 1</option> <option value="N">Option 2</option> </select> <div id="notification"> Me </div> 

我會這樣做(請注意,將布爾值傳遞給.toggle()將確定狀態):

 $('#name_1,#name_2').on('change', function(){ $('#notification').toggle($('#name_1').val() + $('#name_2').val() === 'YN') }).trigger('change'); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="name_1" id="name_1"> <option value="Y" selected="selected">Option 1</option> <option value="N">Option 2</option> </select> <select name="name_2" id="name_2"> <option value="Y" selected="selected">Option 1</option> <option value="N">Option 2</option> </select> <div id="notification">Warning Message</div> 

節目<div>當滿足特定的 URL 參數時</div><div id="text_translate"><p>我在 Google 表格中有一個表單,它將 URL 參數傳遞到頁面,然后該頁面應顯示基於 URL 參數的內容。</p><p> 因此,如果有人在 Google Sheet 中檢查“item 1”和“item 2”,參數將按如下方式傳遞:</p><p> <a href="https://my-url.com/?item1=value1&amp;item2=value2" rel="nofollow noreferrer">https://my-url.com/?item1=value1&amp;item2=value2</a></p><p> 現在有幾個 div 容器,設置為 display:none 和 css。 當滿足 URL 參數時,應該會顯示隱藏的 div 容器。 所以 html 是:</p><pre> &lt;div class="hidden" id="value1"&gt;This content should show, when the URL parameter value 1 is passed&lt;/div&gt; &lt;div class="hidden" id="value2"&gt;This content should show, when the URL parameter value 2 is passed&lt;/div&gt;</pre><p> 我在網上找到了一些代碼,它幾乎可以做到這一點,但它一次只能顯示一個 div: <a href="https://jennamolby.com/how-to-display-dynamic-content-on-a-page-using-url-parameters/" rel="nofollow noreferrer">https://jennamolby.com/how-to-display-dynamic-content-on-a-page-using -url參數/</a></p><p> 我的問題是,對於每個傳遞的參數,必須顯示一個字段。</p><p> 誰能幫我這個? 無論如何,我真的不是 js 專家。</p></div>

[英]Show <div> when a specific URL Parameter is met

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 div中的所有選擇均已更改時的jQuery事件 如果任何特定的div具有特定的圖像,如何顯示任何div 通過許多不同的選擇顯示/隱藏DIV jQuery如果填寫了帶有選擇的表單,則顯示div 在foreach循環中的div #id僅在嘗試顯示/隱藏函數時選擇最后一個變量 當用戶選擇特定選項時,如何使 div 出現? 如何在單擊按鈕時顯示特定的div? 節目<div>當滿足特定的 URL 參數時</div><div id="text_translate"><p>我在 Google 表格中有一個表單,它將 URL 參數傳遞到頁面,然后該頁面應顯示基於 URL 參數的內容。</p><p> 因此,如果有人在 Google Sheet 中檢查“item 1”和“item 2”,參數將按如下方式傳遞:</p><p> <a href="https://my-url.com/?item1=value1&amp;item2=value2" rel="nofollow noreferrer">https://my-url.com/?item1=value1&amp;item2=value2</a></p><p> 現在有幾個 div 容器,設置為 display:none 和 css。 當滿足 URL 參數時,應該會顯示隱藏的 div 容器。 所以 html 是:</p><pre> &lt;div class="hidden" id="value1"&gt;This content should show, when the URL parameter value 1 is passed&lt;/div&gt; &lt;div class="hidden" id="value2"&gt;This content should show, when the URL parameter value 2 is passed&lt;/div&gt;</pre><p> 我在網上找到了一些代碼,它幾乎可以做到這一點,但它一次只能顯示一個 div: <a href="https://jennamolby.com/how-to-display-dynamic-content-on-a-page-using-url-parameters/" rel="nofollow noreferrer">https://jennamolby.com/how-to-display-dynamic-content-on-a-page-using -url參數/</a></p><p> 我的問題是,對於每個傳遞的參數,必須顯示一個字段。</p><p> 誰能幫我這個? 無論如何,我真的不是 js 專家。</p></div> 強制多個選擇(下拉菜單)具有唯一值 僅在單擊特定其他div時顯示div
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM