2011-05-11 38 views
1

我不是JS專家,但我想我正在試圖做的是(至少在jQuery的)如何從jQuery的一個.change功能遷移到普通的JavaScript

很簡單,我有3選擇

<select id="faq" class="onchance_fill">...</select> 
    <select id="pages" class="onchance_fill">...</select> 
    <select id="faq" class="onchance_fill">...</select> 

和輸入(這是TinyMCE的一個在advlink插件)

<input type="text" onchange="selectByValue(this.form,'linklisthref',this.value);" value="" class="mceFocus" name="href" id="href" style="width: 260px;"> 

我想,每次我在3選擇的一個改變一個值,該選項的這個值, 會我被放置在輸入中。

jQuery中,這將是這樣的:

$('.ajax_onchance_fill').change(function() { 
     data = $('.ajax_onchance_fill').val(); 
     $('#href').text(data); 
    }); 

,但我可以不使用它。那麼,在純Javascript中等效的是什麼?

感謝

+1

你讓你的生活變得更加困難,通過擺脫jQuery - 試着問「這個jQuery有什麼問題?」然後再選擇在瀏覽器支持方面更加耗費勞動力的路線。 – Nathan

+0

您嘗試過$('.ajax_onchance_fill')。change(function(){ alert($(this).val()); }); ?爲了檢查更改事件是否正在發射? – Nathan

+0

儘管我同意jQuery是蜜蜂膝蓋,但我們並不確定他爲什麼不能使用它,但他確實聲明他不能使用它。 –

回答

1

我會建議你繼續使用jQuery,因爲它加速了這種事情,但純JavaScript我想你想要的東西看起來是這樣的......

<script type="text/javascript"> 
    function load() { 
    var elements = document.getElementsByClassName('onchance_fill'); 
    for(e in elements){ 
     elements[e].onchange = function(){ 
      document.getElementById('href').value = this.value; 
    }  
    } 
    } 
</script> 
+0

好吧,它不工作(沒有錯誤輸出),我需要調用load()方法嗎? –

+0

是的,你會像Jquery中那樣做$(document).ready(),你需要在dom完成加載後調用load。你可以在你的body上使用onload =「load()」,但是不支持dom像jquery那樣加載 –

+0

不錯,它正在工作:-)謝謝...無論如何,純JS ......哇,我在這種情況下錯過了jQuery ;-) –

1
document.getElementsByClassName("ajax_onchance_fill").onchange = function() { 
    getElementById('href').value = this.options[this.selectedIndex].text; 
}; 

雖然我不知道到底是否會因爲超過1元以上getElementsByClassName回報的工作。

1

試試這個:

$('.ajax_onchance_fill').change(function() { 
     var data = $(this).val(); 
     $('#mytextboxid').val(data); 
    }); 
+2

他想擺脫jquery ;-) –

+0

@Pendo - 查看關於這個問題的評論:) – Nathan

+0

哦大聲笑,沒有注意到,對不起! –

相關問題