2014-11-21 212 views
-2

我有3個選項卡,取決於哪個選項卡是點擊我希望表單動作改變。 我有這樣的:點擊功能需要2次點擊

$('#myTab li').click(function(){ 
    if ($('#action1').hasClass('active')){ 
     $('#my-form').attr('action', '/order/signup1') 
    } 
    else if ($('#action2').hasClass('active')){ 
     $('#my-form').attr('action', '/order/signup2') 
    } 
    else if ($('#action3').hasClass('active')){ 
     $('#my-form').attr('action', '/order/signup3') 
    } 

});` 

是實際發生的是,第一個改變行動錯形式的行動,那麼第二次點擊修正形式的行動。

我需要這是正確的形式第一次點擊。

+1

'myTab'不是一個有效的選擇。小心分享HTML以及..? – 2014-11-21 11:29:47

+1

您有''和''元素? – nnnnnn 2014-11-21 11:29:53

+0

您需要使用具有if/else或開關的計數器手動對其進行編碼。一旦你完成了一次,格式就很簡單了。我可以詳細說明你是否在我的評論中沒有得到重點。 – CODeeerrrrrrrr 2014-11-21 11:31:23

回答

0

..depending造成了哪個選項卡單擊希望表格行動改變。

可能有一個更簡單的方法來做到這一點,但因爲你沒有給我們你的HTML,我不能確定。無論如何,你不需要這裏的active課程。你可以只用單擊元素的id這樣的:this.id

下面的代碼:

$('#myTab li').click(function(){ 
    if (this.id === 'action1'){ 
     $('#my-form').attr('action', '/order/signup1'); 
    } 
    else if (this.id === 'action2'){ 
     $('#my-form').attr('action', '/order/signup2'); 
    } 
    else if (this.id === 'action3'){ 
     $('#my-form').attr('action', '/order/signup3'); 
    } 
}); 

演示:http://jsfiddle.net/8v8070eh/1/

+0

非常感謝你!完美的作品! – stickymits 2014-11-21 12:13:51

0

我認爲這是因爲你的代碼先運行,'active'類尚未設置。你可以嘗試的一件事是將你的代碼封裝在setTimeout()中。

$('#myTab li').click(function(){ 
    setTimeout(function() { 
     if ($('#action1').hasClass('active')){ 
      $('#my-form').attr('action', '/order/signup1') 
     } 
     else if ($('#action2').hasClass('active')){ 
      $('#my-form').attr('action', '/order/signup2') 
     } 
     else if ($('#action3').hasClass('active')){ 
      $('#my-form').attr('action', '/order/signup3') 
     } 
    }, 100); 
}); 

這至少應該幫助您確定它是由你的代碼運行「過快」

相關問題