单击超链接时使用javascript

时间:2014-05-15 07:45:28

标签: javascript php jquery html hyperlink

我的用户个人资料系统上有一个设置页面。

HTML (settings.php)

<div id="set-list">
  <div class="set-cont" action="account">
  Account Settings
  </div>
  <div class="set-cont" action="privacy">
  Privacy Settings  
  </div>
</div>
<div id="set-show">
           //account settings html form
</div>

JQUERY

$('.set-cont').click(function(){
    var action = $(this).attr('action');

    $.get('getSettingsHTML.php',{
          action : action
    },function(data){
       $('#set-show').html(data.output);
    },'json');
});

PHP (getSettingsHTML.php)

    <?php
    $output="";
  switch($_GET['action']){
    case 'account':
          $output .='<input type="text" id="firstname">"';
            //blah blah many stuffs
    break;
    case 'privacy':
       $output .='<input type="text" id="email" >';
    break;
    }
    echo json_encode(array("output"=>$output));

    ?>

当页面加载Accont设置的html表单是从默认加载的。 当任何人点击它所采用的.set-cont action属性时,就会从php加载相应的表单。

现在,如果我想加载隐私设置,我必须点击.set-cont中的一个。

如果我有<a href="settings.php">Privacy Settings</a>之类的链接。系统设置将被加载,您必须点击隐私设置菜单才能加载表单。

我有没有办法$('.set-cont[action="privacy"]').trigger('click')a元素或任何其他方式做到?{/ p>

3 个答案:

答案 0 :(得分:1)

您似乎试图从另一个页面链接到settings.php,当页面加载时,您希望能够指定加载哪个表单,隐私或帐户设置。

如果是这样,您可以执行以下操作:

<a href="settings.php#privacy">Privacy Settings</a>

然后在Settings.php上有以下 jQuery

$(function() {
   if (window.location.hash) {
       var action = window.location.hash.substring(1);
       loadForm(action);
   }
});

$('.set-cont').click(function() {
    var action = $(this).attr('action');
    loadForm(action);
});

function loadForm(action) {
    $.get('getSettingsHTML.php',{
        action : action
    },function(data){
        $('#set-show').html(data.output);
    },'json');
}

答案 1 :(得分:0)

不支持以编程方式单击链接。您可以做的是点击链接,创建表单并提交:

HTML

<div class="set-cont" action="privacy">
    <a href="settings.php">Privacy Settings</a>
</div>

的jQuery

$('.set-cont > a').on("click", function()
{
    var action = $(this).parent("div").attr('action'),
        href = $(this).attr('href');

    var form = $("<form></form>");
    form.attr(
    {
        id     : "newform",
        action : href + "?action=" + action,
        method : "GET",
        target : "_blank"        // Eventually open in new window/tab
    });

    $("body").append(form);
    $("#newform").submit();
    $("#newform").remove();
});

答案 2 :(得分:0)

seetting.php->
<div id="set-list">
  <div class="set-cont" action="account">
 <form name="form" class="form" action="url1.php" method="post" id='account_form'>
          <input type="hidden" name="name1" >
           <input type="hidden" name="name2" >
     </form>
  </div>
  <div class="set-cont" action="privacy">
    <form name="form" class="form" action="url2.php" method="post" id='privacy_form'>
          <input type="hidden" name="name1" >
           <input type="hidden" name="name2" >
     </form>
  </div>
</div>
<div id="set-show">
           //account settings html form
</div>
jquery->
$('.set-cont').on("click", function()
{
    var action = $(this).attr('action');

    if(action=="privacy")
    {
    var formid='privacy_form';
    }
    else if(action=="account")
    {
    var formid='account_form';
    }
    $("#"+formid).submit();

});