如何使用html和javascript中的单选按钮插入CN1中的数据库
How to use radio button in html and javascript to insert into the database in CN1
我试图在选中时获取 html 页面中单选按钮的值,并将其插入 sqlite 数据库和 mysql。下面是我的完整代码:
Form hi = new Form("Hi World");
final WebBrowser b = new WebBrowser(){
@Override
public void onLoad(String url) {
// Placed on onLoad because we need to wait for page
// to load to interact with it.
BrowserComponent c = (BrowserComponent)this.getInternal();
// Create a Javascript context for this BrowserComponent
JavascriptContext ctx = new JavascriptContext(c);
JSObject window = (JSObject)ctx.get("window");
window.set("addAsync", new JSFunction(){
public void apply(JSObject self, final Object[] args) {
String a = (String)args[0];
// Double b = (Double)args[1];
System.out.println("Value picked is "+a);
JSObject callback = (JSObject)args[1];
callback.call(new Object[]{new String(a)});
System.out.println("ok Good");
}
});
}
};
b.setPage( "<html lang=\"en\">\n" +
" <head>\n" +
" <meta charset=\"utf-8\">\n" +
" <script>\n" +
"function test() {"+
" var radios = document.getElementsByName('radiotest');"+
" var found = 1;"+
" for (var i = 0; i < radios.length; i++) { " +
" if (radios[i].checked) {"+
// " document.getElementById('input3').setAttribute('value', radios[i].value); " +
" alert(radios[i].value);"+
" found = 0;"+
" break;"+
" }"+
"}"+
" if(found == 1)"+
" {"+
" alert('Please Select Radio');"+
" } "+
"}"+
// + \n" +
" var radios = document.getElementsByName('radiotest')"+
" document.addEventListener('click', function(){\n" +
" var found = 1;"+
" for (var i = 0; i < radios.length; i++) { " +
" if (radios[i].checked) {"+
// " document.getElementById('input3').setAttribute('value', radios[i].value); " +
" alert(radios[i].value);"+
" found = 0;"+
" break;"+
" }"+
"}"+
" if(found == 1)"+
" {"+
" alert('Please Select Radio');"+
" } "+
" a = document.getElementById('val1').value ;\n" +
" b = document.getElementById('val2').value\n" +
" window.addAsync(a, b, function(result){\n" +
" document.getElementById('result').innerHTML = result;\n" +
" });\n" +
" }, true); "
+ "" +
" </script>\n" +
" </head>\n" +
" <body >\n" +
" <table border='0' cellspacing = '15'>"+
" <thead>"+
" </thead>"+
" <tbody>"+
" <tr>"+
" <td><font size = '3'> <b>A </font></b><input type='radio' name='radiotest' id='val1' onclick='test()' value='1' style='border: none;'> value1</input>"+
"</td>"+
" </tr>"+
" <tr>"+
" <td><font size = '3'> <b> B</font></b><input type='radio' name='radiotest' id='val2' onclick='test()' value='2' style='border: none;'> value2</input>"+
"</td>"+ " </tr>"+
" <tr>"+
" <td> <font size = '3'> <b>C </font></b><input type='radio' name='radiotest' id='val3' onclick='test()' value='3'style='border: none;'> value3</input>"+
" </tr>"+
"<tr>"+
" <td> <font size = '3'> <b>D </font></b> <input type='radio' name='radiotest'id='val4' onclick='test()' value='4'style='border: none;'> value4</input>"+
" </tr>"+
"</tbody>"+
"</table>"+
"<span id=\"result\"></span>"+
" </body>\n" +
"</html>", null);
hi.setLayout(new BorderLayout());
hi.setLayout(new BorderLayout());
hi.addComponent(BorderLayout.CENTER, b);
hi.show();
上面的代码对我不起作用。请帮助。
现在的问题是通过收集其值并将这些值相应地插入数据库来检查时将 actionListener 添加到单选按钮。
我已经编辑了我的代码,有了这个我可以用下面的代码得到用 javascript 函数选择的值。现在,如何在单击单选按钮时将单选按钮的值插入数据库。
Form hi = new Form("BrowserComponent", new BorderLayout());
BrowserComponent bc = new BrowserComponent();
bc.setPage( "<html lang=\"en\">\n" +
" <head>\n" +
" <meta charset=\"utf-8\">\n" +
" </head>\n" +
" <body >\n" +
" <table border='0' cellspacing = '15'>"+
" <thead>"+
" </thead>"+
" <tbody>"+
" <tr>"+
" <td><font size = '3'> <b>A </font></b><input type='radio' name='radiotest' id = 'val1' onclick='test()' value='1' style='border: none;'> value1</input>"+
"</td>"+
" </tr>"+
" <tr>"+
" <td><font size = '3'> <b> B</font></b><input type='radio' name='radiotest'id = 'val2' onclick='test()' value='2' style='border: none;'> val2</input>"+
"</td>"+
" </tr>"+
" <tr>"+
" <td> <font size = '3'> <b>C </font></b><input type='radio' name='radiotest' onclick='test()' value='3'style='border: none;'> val3</input>"+
" </tr>"+
"<tr>"+
" <td> <font size = '3'> <b>D </font></b> <input type='radio' name='radiotest' onclick='test()' value='4'style='border: none;'> val4</input>"+
" </tr>"+
"</tbody>"+
"</table>"+
" <script type='text/javascript'>" +
//This javascript is perfect now.
"function test() {"+
" var radios = document.getElementsByName('radiotest');"+
" var found = 1;"+
" for (var i = 0; i < radios.length; i++) { " +
" if (radios[i].checked) {"+
// " document.getElementById('input3').setAttribute('value', radios[i].value); " +
// " instruction = document.getElementById('input3').value" +
// "'"+option_code2+"'"+
" alert(radios[i].value);"+
" found = 0;"+
" break;"+
" }"+
"}"+
" if(found == 1)"+
" {"+
" alert('Please Select Radio');"+
" } "+
"}"+
"</script>"+
" </body>\n" +
"</html>", null);
TextField tf = new TextField();
hi.add(BorderLayout.CENTER, bc).
add(BorderLayout.SOUTH, tf);
//bc.addWebEventListener("onLoad", (e) -> bc.execute("fnc('<p>Hello World</p>')"));
hi.show();
确保您的库是最新的,如果 JavaScript 网桥在 setURL
上正常工作但在 setPage
上失败,这听起来像是我们在最近的更新中修复的问题。
我试图在选中时获取 html 页面中单选按钮的值,并将其插入 sqlite 数据库和 mysql。下面是我的完整代码:
Form hi = new Form("Hi World");
final WebBrowser b = new WebBrowser(){
@Override
public void onLoad(String url) {
// Placed on onLoad because we need to wait for page
// to load to interact with it.
BrowserComponent c = (BrowserComponent)this.getInternal();
// Create a Javascript context for this BrowserComponent
JavascriptContext ctx = new JavascriptContext(c);
JSObject window = (JSObject)ctx.get("window");
window.set("addAsync", new JSFunction(){
public void apply(JSObject self, final Object[] args) {
String a = (String)args[0];
// Double b = (Double)args[1];
System.out.println("Value picked is "+a);
JSObject callback = (JSObject)args[1];
callback.call(new Object[]{new String(a)});
System.out.println("ok Good");
}
});
}
};
b.setPage( "<html lang=\"en\">\n" +
" <head>\n" +
" <meta charset=\"utf-8\">\n" +
" <script>\n" +
"function test() {"+
" var radios = document.getElementsByName('radiotest');"+
" var found = 1;"+
" for (var i = 0; i < radios.length; i++) { " +
" if (radios[i].checked) {"+
// " document.getElementById('input3').setAttribute('value', radios[i].value); " +
" alert(radios[i].value);"+
" found = 0;"+
" break;"+
" }"+
"}"+
" if(found == 1)"+
" {"+
" alert('Please Select Radio');"+
" } "+
"}"+
// + \n" +
" var radios = document.getElementsByName('radiotest')"+
" document.addEventListener('click', function(){\n" +
" var found = 1;"+
" for (var i = 0; i < radios.length; i++) { " +
" if (radios[i].checked) {"+
// " document.getElementById('input3').setAttribute('value', radios[i].value); " +
" alert(radios[i].value);"+
" found = 0;"+
" break;"+
" }"+
"}"+
" if(found == 1)"+
" {"+
" alert('Please Select Radio');"+
" } "+
" a = document.getElementById('val1').value ;\n" +
" b = document.getElementById('val2').value\n" +
" window.addAsync(a, b, function(result){\n" +
" document.getElementById('result').innerHTML = result;\n" +
" });\n" +
" }, true); "
+ "" +
" </script>\n" +
" </head>\n" +
" <body >\n" +
" <table border='0' cellspacing = '15'>"+
" <thead>"+
" </thead>"+
" <tbody>"+
" <tr>"+
" <td><font size = '3'> <b>A </font></b><input type='radio' name='radiotest' id='val1' onclick='test()' value='1' style='border: none;'> value1</input>"+
"</td>"+
" </tr>"+
" <tr>"+
" <td><font size = '3'> <b> B</font></b><input type='radio' name='radiotest' id='val2' onclick='test()' value='2' style='border: none;'> value2</input>"+
"</td>"+ " </tr>"+
" <tr>"+
" <td> <font size = '3'> <b>C </font></b><input type='radio' name='radiotest' id='val3' onclick='test()' value='3'style='border: none;'> value3</input>"+
" </tr>"+
"<tr>"+
" <td> <font size = '3'> <b>D </font></b> <input type='radio' name='radiotest'id='val4' onclick='test()' value='4'style='border: none;'> value4</input>"+
" </tr>"+
"</tbody>"+
"</table>"+
"<span id=\"result\"></span>"+
" </body>\n" +
"</html>", null);
hi.setLayout(new BorderLayout());
hi.setLayout(new BorderLayout());
hi.addComponent(BorderLayout.CENTER, b);
hi.show();
上面的代码对我不起作用。请帮助。
我已经编辑了我的代码,有了这个我可以用下面的代码得到用 javascript 函数选择的值。现在,如何在单击单选按钮时将单选按钮的值插入数据库。
Form hi = new Form("BrowserComponent", new BorderLayout());
BrowserComponent bc = new BrowserComponent();
bc.setPage( "<html lang=\"en\">\n" +
" <head>\n" +
" <meta charset=\"utf-8\">\n" +
" </head>\n" +
" <body >\n" +
" <table border='0' cellspacing = '15'>"+
" <thead>"+
" </thead>"+
" <tbody>"+
" <tr>"+
" <td><font size = '3'> <b>A </font></b><input type='radio' name='radiotest' id = 'val1' onclick='test()' value='1' style='border: none;'> value1</input>"+
"</td>"+
" </tr>"+
" <tr>"+
" <td><font size = '3'> <b> B</font></b><input type='radio' name='radiotest'id = 'val2' onclick='test()' value='2' style='border: none;'> val2</input>"+
"</td>"+
" </tr>"+
" <tr>"+
" <td> <font size = '3'> <b>C </font></b><input type='radio' name='radiotest' onclick='test()' value='3'style='border: none;'> val3</input>"+
" </tr>"+
"<tr>"+
" <td> <font size = '3'> <b>D </font></b> <input type='radio' name='radiotest' onclick='test()' value='4'style='border: none;'> val4</input>"+
" </tr>"+
"</tbody>"+
"</table>"+
" <script type='text/javascript'>" +
//This javascript is perfect now.
"function test() {"+
" var radios = document.getElementsByName('radiotest');"+
" var found = 1;"+
" for (var i = 0; i < radios.length; i++) { " +
" if (radios[i].checked) {"+
// " document.getElementById('input3').setAttribute('value', radios[i].value); " +
// " instruction = document.getElementById('input3').value" +
// "'"+option_code2+"'"+
" alert(radios[i].value);"+
" found = 0;"+
" break;"+
" }"+
"}"+
" if(found == 1)"+
" {"+
" alert('Please Select Radio');"+
" } "+
"}"+
"</script>"+
" </body>\n" +
"</html>", null);
TextField tf = new TextField();
hi.add(BorderLayout.CENTER, bc).
add(BorderLayout.SOUTH, tf);
//bc.addWebEventListener("onLoad", (e) -> bc.execute("fnc('<p>Hello World</p>')"));
hi.show();
确保您的库是最新的,如果 JavaScript 网桥在 setURL
上正常工作但在 setPage
上失败,这听起来像是我们在最近的更新中修复的问题。