2012-11-20 46 views
0

早上好,兩種不同的條件自動黏合文本字段

首先,在此先感謝任何幫助,您可以提供

我會明確地試圖解釋自己儘可能:

我有一些30ish相等的文本字段,在窗體中有一個不可修改的寬度和高度。輸入到文本字段時,用戶將有兩種選擇:

一)字類型字

b)由另一烴源文本塊複製並粘貼到文本字段。

現在,我想要的是有兩個不同的選項來自動選項卡到下一個文本字段,如果第一個已被填寫。

這些都是我曾嘗試到現在的兩個選項,這兩個工作對自己使用時,但不會一起工作:

一)自定義按鍵腳本,讓說,Field.0:

if (event.fieldFull) { 
    this.getField("Field.1").setFocus(); 
} 

二)自定義的模糊腳本Field.0:

var temp = new Array(); 
temp = this.getField("Field.0").value.split(' '); 
var rest = ""; 
ini = temp[0] + ' '; 
var charsRead = temp[0].length + 1; 
var index = 1; 
while ((charsRead + temp[index].length) < 110){ 
    ini = ini + temp[index] + ' '; 
    index++; 
    charsRead = charsRead + temp[index].length + 1; 
} 
for (var i=index ; i < temp.length-1 ; i++){ 
    rest = rest + temp[i] + ' '; 
} 
this.getField("Field.0").value = ini; 
this.getField("Field.1").value = rest; 
this.getField("Field.1").setFocus(); 

你可能可能已經注意到,我不是專家(甚至還沒有接近一個......)的編劇,所以該代碼可能效率低下或重複。

腳本的作用是:將粘貼到數組中的單詞存儲到數組中(以便不將單詞分隔在單詞的中間),並將第一個擬合單詞複製到110個字符(任意數字有時太少,有時太多),然後將數組中剩餘的單詞粘貼到下一個字段中。

當用戶退出Field.0時,焦點被設置爲Field.1。如果文本仍然太長,那麼當他選中Field.1時,焦點將設置爲Field.2,並將第二個剩餘文本粘貼到該文本中。所以,他所要做的就是按Ctrl + V和TAB,TAB,TAB,直到所有文本都佔用必要的字段。

現在,爲了解決方法指向a),必須禁用滾動長文本,但是,用於解決問題b)的腳本是必需的。

我正在尋找的是一種獨立於用戶如何輸入文本的方式來自動選項卡,當字段已滿。我的意思是,文本已經達到了可視區域的盡頭。當輸入文本(我想它必須是按鍵腳本)或者粘貼一個長詞組(因爲按鍵在這裏不起作用)時或者當粘貼一個長詞組時,或者當粘貼一個長詞組時,或者當粘貼一個長詞組時

對不起,很長的文章,並再次感謝您的幫助。

BTW:使用Adobe Acrobat X Pro。

回答

1

如果您有等寬字體,您可以確定文本字段中有多少個字符。 將粘貼的文本分解爲該大小的塊,然後將這些塊分佈在這些域上。 因此,使用chunkfunction found here

//(On paste) 
var brokenUpString = pastedString.chunk(maxInputLengthPerField); 
for(var i = 0; brokenUpString[i]; i++){ 
    fields[i]value = brokenUpString[i] 
} 

現在,如果你想將光標移動到當用戶輸入的下一個文本字段,這樣的事情可能工作:

//(On key up) 
var currentField = 0; 
if(fields[currentField].value.length == maxInputLengthPerField){ 
    currentField++; 
    fields[currentField].setFocus(); 
} 

問題當用戶按下一個按鈕時,很難檢測到輸入了多少個字符,但是如果發生這種情況,您可以將整個字符串分解並分散到字段中。

(從link :)

String.prototype.chunk = function(size) { 
    return [].concat.apply([], 
     this.split('').map(function(x,i){ return i%size ? [] : this.slice(i,i+size) }, this) 
    ) 
} 
+0

首先,感謝您的響應chunk()功能。但是,最好不要使用等寬字體。這是由於與使用非等寬字體的PDF文檔的其餘部分的同質性。 最糟糕的是,我最終會使用一個,但現在我想避免它。我剛剛看到,在Acrobat 8​​.0中,在文本字段選項中有一個「複選框」,您可以將大小限制爲可見區域。我想知道勾選複選框時會調用哪個函數。這可能被證明是一個可行的解決方案。 –

+0

恐怕我無法幫助您使用Acrobat特定的函數,也不知道有什麼方法可以檢測字符串是否溢出它的字段(以及在哪個索引處)。 – Cerbrus

+0

恩,謝謝:) –

相關問題