初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-08-26 18:36:37

蝉亜麻
Member

FMのフィールド値をWebビューアにフォーム入力させたい

初めて質問します。
FMのフィールド値をWebビューアにフォーム入力させたいと思っています。

環境:
FM14
Windows7

Webビューアに表示するサイト:
・PHPを使って表示している
・frameが切られており、Webビューアは右フレームのURLで表示している。
(ページURL:http://URL/ 右フレーム;http://URL/client.php 左フレーム:http://URL/menu.php)
・ページの表示はボタンを用意し、ユーザに操作させる予定。
・<input>タグはこのように書かれています。
<input type=text name=client_id value="" maxlength=5 size=12 style="ime-mode:disabled">

このWebビューアにFMのフィールド値をフォーム入力させたく、
過去の投稿を参考に、Webビューアの設定スクリプトステップで動かすjavascriptを下記のように書きました。
id属性ではなくname属性を使っていたため、getElementByIdではなくgetElementByNameを使用しました。

"javascript:function x(){" &
"document.getElementByName('client_id').value='54321';" &
"}x()"

最初はコードに値を埋め込んで実行したものの、フォームに値が表示されません。
エラーは5が返ります。
Webビューアの設定スクリプトステップのオブジェクト名は正しく入力しています。

どこがいけないのか自分でも調べたのですが分かりません。
皆さまのお知恵で助けていただけたらと思います。
よろしくお願いいたします。

Offline

#2 2016-08-26 22:32:00

ぽんかん
Guest

Re: FMのフィールド値をWebビューアにフォーム入力させたい

nameでは1つに特定できないので何番目か指定する必要がある。Elementsでしょう。

#3 2016-08-27 01:33:32

蝉亜麻
Member

Re: FMのフィールド値をWebビューアにフォーム入力させたい

ぽんかん wrote:

nameでは1つに特定できないので何番目か指定する必要がある。Elementsでしょう。

ぽんかん様

ご回答ありがとうございます。
(誤)getElementByName → (正)getElementsByName
ですね。ご指摘ありがとうございました。
そしてgetElementsByNameは配列構造のデータが返ってくる、不勉強で申し訳ありません。

ご指摘を受けて、次のように修正してみましたが、これもまたエラー5が返ってきました。
検証しているページのソースに「name=client_id」はひとつだけ存在します。

"javascript:function x(){" &
"var doc=document.getElementsByName('client_id');" &
"doc[0].value='54321';" &
"}x()"

なかなか敷居が高いです。
ほかに間違っているところ、見落としているところがあればご指摘お願いいたします。

Offline

#4 2016-08-27 02:36:17

Hiro
Member

Re: FMのフィールド値をWebビューアにフォーム入力させたい

JavaScriptでフォームのコントロールをnameから指定する場合、
      document.(参照するフォームのname).(参照するテキストボックスのname).value
とすれば良いから、

"javascript:function x(){" &
"var doc=document.FormName.cliant_id.value='54321';" &
"}; x();"

ただし、フォームの名前は未説明なので、ここでは FormName と仮称しています。

Offline

#5 2016-08-28 02:48:43

蝉亜麻
Member

Re: FMのフィールド値をWebビューアにフォーム入力させたい

Hiro wrote:

JavaScriptでフォームのコントロールをnameから指定する場合、
      document.(参照するフォームのname).(参照するテキストボックスのname).value
とすれば良いから、

"javascript:function x(){" &
"var doc=document.FormName.cliant_id.value='54321';" &
"}; x();"

ただし、フォームの名前は未説明なので、ここでは FormName と仮称しています。

Hiro様

ご回答ありがとうございます。
検証ページのformタグにname属性がなかったので、下記を試しましたがいずれもエラー5が返りました。

"javascript:function x(){" &
"document.forms[0].cliant_id.value='54321';" &
"}x()"

"javascript:function x(){" &
"document.forms[0].elements['cliant_id'].value='54321';" &
"}x()"

javascript講座になってしまってスミマセン。
構文も構文以外の点でも引き続き検証いたします。

Last edited by 蝉亜麻 (2016-08-28 03:18:00)

Offline

#6 2016-08-28 07:42:38

藤 稔
Guest

Re: FMのフィールド値をWebビューアにフォーム入力させたい

セミコロンが足りないのでは?

#7 2016-08-29 17:47:52

蝉亜麻
Member

Re: FMのフィールド値をWebビューアにフォーム入力させたい

藤 稔 wrote:

セミコロンが足りないのでは?

藤 稔様
返信遅くなり申し訳ありません。
ご回答ありがとうございます。
セミコロンは他のトピックのサンプルを参考に変更してみましたが、結果は変わりませんでした。

Webビューアの設定:リセットでもエラー5になることが分かり、Webビューアオブジェクトを作り直したところ、この点については解消しました。
その後は、Webビューアの設定でjavascriptを実行すると、エラー0になりましたが、Web上のフォームに入力値が表示されない状態です。
そしてWebビューアの下のところに「読み込み中:"%22javascript:function%20x()doc=document.forms[0]...(以下略)」といった表示が出ます。

javascriptに詳しくなく、初歩的な原因があるかもしれません。
このトピックは「解決」とはしませんが、何かお知恵がありましたら教えたいただければと思います。
調査はまだ続けます。続報できることがありましたらまた補足いたします。
ご回答いただいた皆様どうもありがとうございました。

Offline

#8 2016-08-29 18:38:32

qb_dp
Member

Re: FMのフィールド値をWebビューアにフォーム入力させたい

JavaScript というより、FileMaker のスクリプトの記述方法では?

「読み込み中:"%22javascript:」
頭の「%22」が原因では?

例:
Web ビューアの設定 [オブジェクト名: "web1"; URL: "javascript:function x(){document.getElementsByName('client_id')[0].value='54321';}x()"]

Last edited by qb_dp (2016-08-29 20:24:53)

Offline

#9 2016-08-30 07:47:31

藤 稔
Guest

Re: FMのフィールド値をWebビューアにフォーム入力させたい

先頭に"が出てくるってことは、計算式を直接設定しないでフィールドに入れたりしてるんですかねえ??

#10 2016-08-31 10:45:05

蝉亜麻
Member

Re: FMのフィールド値をWebビューアにフォーム入力させたい

qb_dp様
返信が遅くなり申し訳ありません。
コードは全て半角(「”」にスペースも)で、例示いただいたように入力していました。

藤 稔様
返信が遅くなり申し訳ありません。
構文はWeb設定に直接入力するパターンとテキストフィールドに書き込んだものをWeb設定の中で読み込ませるパターンと両方試して同じ結果でした。



今、Webビューアオブジェクトの設定で「URLを自動的にエンコード」をオフにし、
下記を実行したところ成功しました!
Web ビューアの設定 [オブジェクト名: "web1"; URL: "javascript:function x(){document.forms[0].client_id='54321';}x()"]
Web ビューアの設定 [オブジェクト名: "web1"; URL: "javascript:function x(){document.getElementsByName('client_id')[0].value='54321';}x()"]

停滞していたものが一歩前に進めます!
Hiro様、藤 稔様、qb_dp様、長いことお付き合いいただき本当にありがとうございました。

Last edited by 蝉亜麻 (2016-08-31 15:24:13)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.017 seconds, 7 queries executed - Memory usage: 525.66 KiB (Peak: 546.2 KiB) ]