2017-01-30 13 views
1

下面是一個對話框中的javascript文件確定按鈕的代碼:如何在不按Javascript中的相關按鈕的情況下自動執行按鈕的某些操作(OK/SUBMIT)?

onOk: function() { 

        var selection = this._.editor.getSelection(), 
        bookmarks = selection.createBookmarks(); 

        var cells = this.cells; 

        for (var i = 0; i < cells.length; i++) 
         this.commitContent(cells[ i ]); 

        this._.editor.forceNextSelectionCheck(); 
        selection.selectBookmarks(bookmarks); 
        this._.editor.selectionChange(); 
}, 

所以,在對話框中當我按OK某些行動已進行enter image description here

在這裏,我需要按確定按鈕爲我的文本區域:

commit: function(element) { 

           var value=20; 

           unit = this.getDialog().getValueOf('info', 'widthType') || getCellWidthType(element); 

           element.setStyle('width', value + unit); 
}, 

現在,我希望ok按鈕的操作可以在不按ok按鈕的情況下執行。

所以,使用的功能自調用函數並執行它裏面的犯這樣的:

commit: function(element) {      

      var value=20; 
      unit = this.getDialog().getValueOf('info', 'widthType') || getCellWidthType(element); 

      (function() { 

       var selection = this._.editor.getSelection(), 
       bookmarks = selection.createBookmarks(); 

       var cells = this.cells; 

       for (var i = 0; i < cells.length; i++) 
          this.commitContent(cells[ i ]); 

       this._.editor.forceNextSelectionCheck(); 
       selection.selectBookmarks(bookmarks); 
       this._.editor.selectionChange(); 

      })(); 

       element.setStyle('width', value + unit);      
}, 

但它無法正常工作。

無論如何,onOK裏面的代碼每次都會自動執行嗎?

回答

2

您可以模擬所需按鈕上的點擊事件。通過這樣做,將會調用click事件的所有事件偵聽器。因此,如果onOK附加到按鈕的點擊事件上,模擬點擊該按鈕將自動調用它。以下是如何在元素上模擬點擊事件:

// select the element 
var element = document.getElementById("someId"); 
// simulate the click event on that element 
element.click(); 

下面是一個例子,在那裏你可以在一個按鈕模擬點擊事件,因此,稱它是自動點擊事件監聽器(沒有實際點擊的按鈕) :

var onOK = function() { 
 
    alert("ok clicked"); 
 
} 
 
    
 
var element = document.getElementById("okbutton"); 
 
element.click(); 
 
<div > 
 
    <button onclick ="onOK()" id="okbutton">click here </button> 
 
</div>

1

您需要刪除新的函數聲明爲函數這樣

commit: function(element) {      
    var value=20; 
    unit = this.getDialog().getValueOf('info', 'widthType') || getCellWidthType(element); 

    // OK button Code here 
    var selection = this._.editor.getSelection(), 
    bookmarks = selection.createBookmarks(); 

    var cells = this.cells; 
    for (var i = 0; i < cells.length; i++) 
     this.commitContent(cells[ i ]); 

    this._.editor.forceNextSelectionCheck(); 
    selection.selectBookmarks(bookmarks); 
    this._.editor.selectionChange(); 
    //OK button code complete 

    element.setStyle('width', value + unit);      
} 

但是,仍然this關鍵字會考慮commit按鈕的所有事情了,所以OK按鍵,你需要用它來id或class指定它像

var thisEle = $("#okButtonIdHere"); 
var selection = thisEle._.editor.getSelection(), 
bookmarks = selection.createBookmarks(); 

var cells = thisEle.cells; 
for (var i = 0; i < cells.length; i++) 
    thisEle.commitContent(cells[ i ]); 

thisEle._.editor.forceNextSelectionCheck(); 
selection.selectBookmarks(bookmarks); 
thisEle._.editor.selectionChange(); 

更新答案這裏

您的此代碼工作正常

commit: function(element) { 

    var value=20; 

    unit = this.getDialog().getValueOf('info', 'widthType') || getCellWidthType(element); 

    element.setStyle('width', value + unit); 
}, 

現在您要執行OK對接點擊這個commit函數。因此,作爲每迪內希·沙阿的答案,你可以在該按鈕的ID設置的onclick功能類似下面

整個代碼

commit: function(element) { 

    var value=20; 

    unit = this.getDialog().getValueOf('info', 'widthType') || getCellWidthType(element); 

    element.setStyle('width', value + unit); 

    $("#okbuttonId").click(); 
}, 

$(document).ready(function(){ 
    $("#okbuttonId").click(function(){ 
     var selection = this._.editor.getSelection(), 
     bookmarks = selection.createBookmarks(); 

     var cells = this.cells; 

     for (var i = 0; i < cells.length; i++){ 
      this.commitContent(cells[ i ]); 
     } 
     this._.editor.forceNextSelectionCheck(); 
     selection.selectBookmarks(bookmarks); 
     this._.editor.selectionChange(); 
    }); 
}); 

這樣,您就可以撥打OK按鈕,爲你工作的類似的功能。讓我知道這是否工作。

+0

,,,這樣不行。你還有其他解決方案嗎?我也嘗試了更改jQuery的方法..但它也失敗.. –

+0

請檢查我更新的答案,如果您使用jQuery,那麼這將爲你工作。 –

相關問題