将javascript onclick参数传递给另一个页面上的元素

Passing javascript onclick parameter to an element on another page

本文关键字:元素 另一个 javascript onclick 参数传递      更新时间:2023-09-26

我写了一个联系人表单,根据在页面顶部的(表单选择选项)下拉菜单中选择的内容改变自己,使用一些javascript来隐藏元素和更改'required'类等

这在页面上运行良好。

在网站的导航中,我有一个下拉菜单(bootstrap 3),模仿表单下拉菜单中的选项。这个想法是,访问者有两个选择来移动到他们想要的表单,要么从导航,要么从联系页面上的下拉菜单。

我有一些javascript检测导航选择和应该改变联系页面上的相关下拉菜单,这实际上是有效的,前提是你已经在联系页面。

我遇到的困难是,将值从主页传递到联系人页面。

下面的一些代码片段可能会有所帮助:

联系人页面表单下拉列表:

   <div class="dropdown">
    <label for="nature">Nature of Enquiry?</label>
      <select tabindex=1 name="nature" id="nature">
       <option value="0" selected>Ask a Question</option>
       <option value="1">Get a Quote</option>
       <option value="2">Submit Meter Reading</option>
       <option value="3">Log a Service Call</option>
      </select>
    </div>

全局导航:

   <li class="dropdown  <?=($page_title == 'Contact') ? 'active' : ''?>">
     <a data-toggle="dropdown" class="dropdown-toggle" href="#">Contact <b class="caret"></b></a>
     <ul role="menu" class="dropdown-menu choose">
       <li><a href="./contact.php#Contact" id="0">Ask a Question</a></li>
       <li><a href="./contact.php#Contact" id="1">Get a Quote</a></li>
       <li><a href="./contact.php#Contact" id="2">Submit Meter Reading</a></li>
       <li><a href="./contact.php#Contact" id="3">Log a Service Call</a></li>
     </ul>
   </li>

全局导航javascript捕获:

<script>
  $('.choose a').click(function() {
    $('#nature').val(this.id).change();
  });
</script>

本地联系人页面javascript更改功能:

$('#nature').change(function() 
{ 
var selectedValue = parseInt(jQuery(this).val());
switch(selectedValue){
    case 0:
        hide('error');
        hide('clicks');
        show('subject');
        document.getElementById('subjectspan').style.display = 'inline'; 
        document.getElementById('companyspan').style.display = 'none'; 
        $('input#mono').removeClass('required'); 
        $('input#company').removeClass('required');
        $('textarea#message').addClass('required');                          
        break;
    case 1:
        hide('error');
        hide('clicks');
        show('subject');
        document.getElementById('subjectspan').style.display = 'inline'; 
        document.getElementById('companyspan').style.display = 'none'; 
        $('input#mono').removeClass('required'); 
        $('input#company').removeClass('required');
        $('textarea#message').addClass('required');                           
        break;
    case 2:
        hide('error');
        show('clicks');
        hide('subject');
        document.getElementById('companyspan').style.display = 'inline';
        document.getElementById('meterspan').style.display = 'inline';            
        document.getElementById('subjectspan').style.display = 'none'; 
        $('input#mono').addClass('required');
        $('input#company').addClass('required');
        $('textarea#message').removeClass('required');                        
        break;
    case 3:
        hide('error');
        hide('clicks');
        show('subject');
        document.getElementById('companyspan').style.display = 'inline';
        document.getElementById('subjectspan').style.display = 'inline'; 
        $('input#mono').removeClass('required');            
        $('input#company').addClass('required');
        $('textarea#message').addClass('required');            
        break;
}
});

我知道javascript的最后一点是相当不整洁,但现在它工作。

就像我说的,导航脚本绝对完美的工作,如果你已经在联系页面。我怎么才能让它在另一个页面上工作呢?

尝试在联系人页面的URL中使用GET参数,然后基于该参数触发更改事件。

网址:

<li><a href="./contact.php?nature=0#Contact" id="0">Ask a Question</a></li>

联系人页面上的JavaScript:

<script>
  $(function(){
    $('#nature').val(<?php echo $_GET['nature']; ?>).change();
  });
</script>
最好先清除参数,以防止JavaScript注入。