Расчет Javascript

117
12

здесь ниже кодирование выходного значения отображается в теге div. но я хочу отобразить в текстовом поле. и еще один, я хочу, чтобы первое значение текстового поля было получено из db с использованием php. пожалуйста помогите.

<html>
<head>
<style>
.test {
color:red;
}
#total {
font-size:40px;
}
h1 {
margin: 0 0 10px 0;
text-decoration: underline;
text-align: center;
}
h2 {
margin: 0 0 10px 0;
}
</style>
<script>
calculate = function(totalElement)
{
if (totalElement)
{
var calculation = '';
var overall = '';
var fields = new Array();
var theElement = document.getElementById(totalElement);
var userInputs = myform.elements;
var the_type = '';
for (var f = 0; f < userInputs.length; f++)
{
if (userInputs[f].className=='special_value')
{
if (userInputs[f].type=='select-one')
{
if(userInputs[f].options[userInputs[f].selectedIndex].value)
{
fields[f] = userInputs[f].options[userInputs[f].selectedIndex].value;
}
else
{
fields[f] = 0;
}
}
else if(userInputs[f].type=='radio' || userInputs[f].type=='checkbox')
{
if (userInputs[f].checked)
{
fields[f] = userInputs[f].value;
}
else
{
fields[f] = 0;
}
}
else
{
if (userInputs[f].value)
{
fields[f] = userInputs[f].value;
}
else
{
fields[f] = 0;
}
}
}
}

for (var i=0; i<fields.length; i++)
{
calculation += fields[i];

if (i!=fields.length-1)
{
calculation += '+';
}
}

if (calculation!='')
{
overall = eval(calculation).toFixed(2);
}

if (overall!='')
{
theElement.innerHTML = '£'+overall;
}
}
}
</script>
</head>
<body>
<form name="myform">
<input onKeyPress="calculate('total');" onBlur="calculate('total');" class="special_value" type="text" name="price"> <Br/>
<input onKeyPress="calculate('total');" onBlur="calculate('total');" class="special_value" type="text" name="price2"> <Br/>
<input onKeyPress="calculate('total');" onBlur="calculate('total');" class="special_value" type="text" name="price4"> <Br/>
<div id="total"></div>
<input onClick="calculate('total');" type="button" name="button" value="re-calculate">
</form>
</body>
</html>

спросил(а) 2021-01-25T19:23:07+03:00 4 месяца, 3 недели назад
1
Решение
133

Попробуй, все будет хорошо.

<?php

$dbPrice = 20;// replace this by your query result
?>
<html>
<head>
<style>
.test {
color:red;
}
#total {
font-size:40px;
}
h1 {
margin: 0 0 10px 0;
text-decoration: underline;
text-align: center;
}
h2 {
margin: 0 0 10px 0;
}
</style>
<script>
calculate = function(totalElement)
{
if (totalElement)
{
var calculation = '';
var overall = '';
var fields = new Array();
var theElement = document.getElementById(totalElement);
var userInputs = myform.elements;
var the_type = '';
for (var f = 0; f < userInputs.length; f++)
{
if (userInputs[f].className=='special_value')
{
if (userInputs[f].type=='select-one')
{
if(userInputs[f].options[userInputs[f].selectedIndex].value)
{
fields[f] = userInputs[f].options[userInputs[f].selectedIndex].value;
}
else
{
fields[f] = 0;
}
}
else if(userInputs[f].type=='radio' || userInputs[f].type=='checkbox')
{
if (userInputs[f].checked)
{
fields[f] = userInputs[f].value;
}
else
{
fields[f] = 0;
}
}
else
{
if (userInputs[f].value)
{
fields[f] = userInputs[f].value;
}
else
{
fields[f] = 0;
}
}
}
}

for (var i=0; i<fields.length; i++)
{
calculation += fields[i];

if (i!=fields.length-1)
{
calculation += '+';
}
}

if (calculation!='')
{
overall = eval(calculation).toFixed(2);
}

if (overall!='')
{
theElement.value = overall;
}
}
}
</script>
</head>
<body>
<form name="myform">
<input onKeyPress="calculate('total');" onBlur="calculate('total');" class="special_value" value="<?php echo $dbPrice;?>" type="text" name="price"> <Br/>
<input onKeyPress="calculate('total');" onBlur="calculate('total');" class="special_value" type="text" name="price2"> <Br/>
<input onKeyPress="calculate('total');" onBlur="calculate('total');" class="special_value" type="text" name="price4"> <Br/>
£<input class="special_value" value="" id="total" type="text" name="total"> <Br/>
<!-- <div id="total"></div> -->
<input onClick="calculate('total');" type="button" name="button" value="re-calculate">
</form>
</body>
</html>

ответил(а) 2021-01-25T19:23:07+03:00 4 месяца, 3 недели назад
45

Вставьте в div тег ввода:

<div id="total"><input type="text" id="theresultdiv" value="0" /></div>

Вместо theElement.innerHTML = '£' +overall; вы должны поместить этот код:

document.getElemenbById('theresultdiv').value = overall;

Как вам сообщили, вы можете использовать AJAX для получения данных из БД. Но в вашем случае было бы лучше использовать простой код:

<?php
// we connect to example.com and port 3307
$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
$rResult = mysql_query("SELECT start_value FROM your_table WHERE start_value > 0 LIMIT 1", $link);
$iResult = mysql_fetch_query($rResult) ;
mysql_close($link);
?>

Поместите код выше в начале вашего файла. Вместо 0 в атрибуте value place:

<?php echo($iResult); ?>

ответил(а) 2021-01-25T19:23:07+03:00 4 месяца, 3 недели назад
45

Показать в текстовом поле легко, а не:

theDiv.innerHTML = value;

делать


theTextbox.value = value;

Чтобы заполнить его данными php, вы должны использовать Ajax, пожалуйста, исследуйте его. Надеюсь это поможет. ура

ответил(а) 2021-01-25T19:23:07+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема